Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:49:06

0001 #!/bin/bash
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 # define GEOM envvar
0031 
0032 defarg="build_run_ana"
0033 arg=${1:-$defarg}
0034 
0035 logging(){
0036    export QPMT=INFO
0037 }
0038 logging
0039 
0040 
0041 #custom4_prefix=${OPTICKS_PREFIX/_Debug}_externals/custom4/0.1.9
0042 custom4_prefix=$HOME/customgeant4
0043 CUSTOM4_PREFIX=${CUSTOM4_PREFIX:-$custom4_prefix}
0044 #CUSTOM4_INCLUDE=$CUSTOM4_PREFIX/include/Custom4
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