File indexing completed on 2026-04-09 07:49:06
0001
0002 usage(){ cat << EOU
0003 QPMT_Test.sh : standalone build variant of standardly build QPMTTest.sh
0004 ==============================================================================================
0005
0006 * standalone builds are useful for testing and to see exactly
0007 what are depending on
0008
0009 * note that the build is using libSysRap, it would be lower level to
0010 directly operate from the sysrap sources : but the tree of dependencies
0011 needs pruning to make that workable in addition to making more of
0012 sysrap header only
0013
0014 2025/06 : not building with RNG errors, HMM need srng.h include into many QSim.cc ?
0015
0016
0017 EOU
0018 }
0019
0020 SCRIPT=$(basename $BASH_SOURCE)
0021 export SCRIPT
0022
0023 REALDIR=$(cd $(dirname $BASH_SOURCE) && pwd)
0024 REALFOLD=$(dirname $REALDIR)
0025
0026 name=QPMT_Test
0027 export FOLD=/tmp/$name
0028 bin=$FOLD/$name
0029
0030 source $HOME/.opticks/GEOM/GEOM.sh
0031
0032 defarg="build_run_ana"
0033 arg=${1:-$defarg}
0034
0035 logging(){
0036 export QPMT=INFO
0037 }
0038 logging
0039
0040
0041
0042 custom4_prefix=$HOME/customgeant4
0043 CUSTOM4_PREFIX=${CUSTOM4_PREFIX:-$custom4_prefix}
0044
0045 CUSTOM4_INCLUDE=$CUSTOM4_PREFIX
0046
0047 cuda_prefix=/usr/local/cuda
0048 CUDA_PREFIX=${CUDA_PREFIX:-$cuda_prefix}
0049
0050
0051 GEOMDIR=$HOME/.opticks/GEOM/$GEOM
0052 JPMTDIR=$GEOMDIR/CSGFoundry/SSim/extra/jpmt
0053
0054
0055 vars="BASH_SOURCE REALDIR REALFOLD FOLD GEOM name CUSTOM4_PREFIX CUDA_PREFIX GEOMDIR JPMTDIR"
0056
0057
0058 if [ "${arg/info}" != "$arg" ]; then
0059 for var in $vars ; do printf "%30s : %s \n" "$var" "${!var}" ; done
0060 fi
0061
0062 if [ "${arg/build}" != "$arg" ]; then
0063
0064 mkdir -p $FOLD
0065
0066 cus="QPMT QProp"
0067 for cu in $cus
0068 do
0069 cui=$REALFOLD/$cu.cu
0070 cuo=$FOLD/${cu}_cu.o
0071 echo $BASH_SOURCE compile $cui
0072
0073 nvcc -c $cui \
0074 -std=c++11 -lstdc++ \
0075 -I.. \
0076 -DWITH_THRUST \
0077 -DWITH_CUSTOM4 \
0078 -I$CUSTOM4_INCLUDE \
0079 -I$OPTICKS_PREFIX/include/SysRap \
0080 -o $cuo
0081 [ $? -ne 0 ] && echo $BASH_SOURCE : nvcc compile error cu $cu && exit 1
0082 echo $BASH_SOURCE : cui $cui cuo $cuo
0083 done
0084
0085 ccs="QPMT QProp QU"
0086 for cc in $ccs
0087 do
0088 cci=$REALFOLD/$cc.cc
0089 cco=$FOLD/${cc}_cc.o
0090 echo $BASH_SOURCE compile $cci
0091 gcc -c $cci \
0092 -g \
0093 -std=c++11 \
0094 -I.. \
0095 -DWITH_CUSTOM4 \
0096 -DWITH_THRUST \
0097 -I$CUSTOM4_INCLUDE \
0098 -I$OPTICKS_PREFIX/include/SysRap \
0099 -I$OPTICKS_PREFIX/include/OKConf \
0100 -I$OPTICKS_PREFIX/externals/plog/include \
0101 -I$OPTICKS_PREFIX/externals/glm/glm \
0102 -I$CUDA_PREFIX/include \
0103 -o $cco
0104 [ $? -ne 0 ] && echo $BASH_SOURCE : gcc compile error cc $cc && exit 2
0105 echo $BASH_SOURCE : cci $cci cco $cco
0106 done
0107
0108 gcc $name.cc \
0109 $FOLD/QPMT_cu.o \
0110 $FOLD/QProp_cu.o \
0111 $FOLD/QPMT_cc.o \
0112 $FOLD/QProp_cc.o \
0113 $FOLD/QU_cc.o \
0114 -g \
0115 -std=c++11 -lstdc++ \
0116 -I.. \
0117 -DWITH_CUSTOM4 \
0118 -DWITH_THRUST \
0119 -I$CUSTOM4_INCLUDE \
0120 -I$OPTICKS_PREFIX/include/SysRap \
0121 -I$OPTICKS_PREFIX/include/OKConf \
0122 -I$OPTICKS_PREFIX/externals/plog/include \
0123 -I$OPTICKS_PREFIX/externals/glm/glm \
0124 -I$CUDA_PREFIX/include \
0125 -L$OPTICKS_PREFIX/lib \
0126 -lOKConf \
0127 -lSysRap \
0128 -L$CUDA_PREFIX/lib \
0129 -lcudart \
0130 -o $bin
0131 [ $? -ne 0 ] && echo $BASH_SOURCE : gcc comple link error && exit 2
0132
0133 echo $BASH_SOURCE : compiled and linked bin : $bin
0134 fi
0135
0136 if [ "${arg/run}" != "$arg" ]; then
0137 $bin
0138 [ $? -ne 0 ] && echo $BASH_SOURCE run error && exit 3
0139 fi
0140
0141 if [ "${arg/dbg}" != "$arg" ]; then
0142 case $(uname) in
0143 Darwin) lldb__ $bin ;;
0144 Linux) gdb__ $bin ;;
0145 esac
0146 [ $? -ne 0 ] && echo $BASH_SOURCE run error && exit 4
0147 fi
0148
0149 if [ "${arg/ana}" != "$arg" ]; then
0150 ${IPYTHON:-ipython} --pdb -i $REALDIR/QPMTTest.py
0151 [ $? -ne 0 ] && echo $BASH_SOURCE ana error && exit 2
0152 fi
0153
0154 if [ "$arg" == "mpcap" -o "$arg" == "mppub" ]; then
0155 export CAP_BASE=$FOLD/figs
0156 export CAP_REL=QPMTTest
0157 export CAP_STEM=QPMTTest
0158 case $arg in
0159 mpcap) source mpcap.sh cap ;;
0160 mppub) source mpcap.sh env ;;
0161 esac
0162
0163 if [ "$arg" == "mppub" ]; then
0164 source epub.sh
0165 fi
0166 fi
0167
0168 exit 0