Created
May 13, 2016 10:07
-
-
Save veggiesaurus/6d16d0e32cd922df3f9a2cecd40a2bad to your computer and use it in GitHub Desktop.
script for running optical sim across multiple threads
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#trap 'kill $(jobs -p)' EXIT | |
# Batch parameters | |
N_PROC=4 | |
Z_ROT=0 | |
N_EV_MIL=80 | |
JOB_NAME=dummyTest | |
FILL_WIDTH=44 | |
FILL_THICKNESS=11.5 | |
SEED=1000 | |
HADD_OUTPUT=true | |
while getopts ":N:Z:J:M:T:W:S:H:" opt; do | |
case $opt in | |
N) | |
N_PROC=$OPTARG | |
;; | |
Z) | |
Z_ROT=$OPTARG | |
;; | |
J) | |
JOB_NAME=$OPTARG | |
;; | |
M) | |
N_EV_MIL=$OPTARG | |
;; | |
T) | |
FILL_THICKNESS=$OPTARG | |
;; | |
W) | |
FILL_WIDTH=$OPTARG | |
;; | |
S) | |
SEED=$OPTARG | |
;; | |
H) | |
HADD_OUTPUT=$OPTARG | |
;; | |
\?) | |
echo "Invalid option: -$OPTARG" >&2 | |
exit 1 | |
;; | |
:) | |
echo "Option -$OPTARG requires an argument." >&2 | |
exit 1 | |
;; | |
esac | |
done | |
COMMAND_NAME=./opticalSim | |
OUTPUT_ALL_THREADS=false | |
CLEAN_THREAD_OUTPUT=true | |
# Simulation parameters | |
N_EVENTS=$(($N_EV_MIL*1000000)) | |
# Histogram parameters | |
PSD_TIME=0.25 | |
# Detector parameters | |
OPT_SIM=true | |
SCINT_RES=4.0 | |
#for optimised run, SCINT_RES=SCINT_RES_ACTUAL*0.547722558 | |
OPT_RES=$SCINT_RES | |
ADDITIONAL_FLAGS="--scintYield 8600 --pmtEff 0.30" | |
if $OPT_SIM | |
then | |
OPT_RES=$(bc <<< 'scale=2; '$SCINT_RES'*0.547722558') | |
ADDITIONAL_FLAGS="--scintYield 2580 --pmtEff 1.00" | |
fi | |
# Source parameters | |
SOURCE_MACRO=source_macros/ambe_neutrons_above.mac | |
# additional | |
OUTPUTFILE=PST_ambe_${Z_ROT}_deg_${N_EV_MIL}mil_Res${SCINT_RES} | |
echo "Running sim with "$N_EVENTS" events spread across "$N_PROC" processes." | |
echo "Detector Z-rotation @"$Z_ROT" degrees." | |
N=$[N_EVENTS / N_PROC] | |
SEED_END=$[SEED+N_PROC-1] | |
echo "Cleaning up previous files" | |
eval rm -f QuadScint_{$SEED..$SEED_END}.root | |
for ((i=0;i<N_PROC;i++)) | |
do | |
# seed | |
SEED_JOB=$[SEED+i] | |
# pipe output | |
PIPE_COMMAND='> /dev/null 2>&1' | |
if [ $i -eq 0 ] || $OUTPUT_ALL_THREADS | |
then | |
PIPE_COMMAND='| sed "s/^/[thread "$i" of "$N_PROC" (zRot: "$Z_ROT"; job: "$JOB_NAME")] /"' | |
fi | |
eval $COMMAND_NAME --seed $SEED_JOB --numberOfEvents $N --zRot $Z_ROT --scintRes $OPT_RES --fillWidth $FILL_WIDTH --fillThickness $FILL_THICKNESS $ADDITIONAL_FLAGS --sourceMacro $SOURCE_MACRO $PIPE_COMMAND & | |
done | |
wait | |
mkdir -p ${JOB_NAME} | |
if $HADD_OUTPUT | |
then | |
eval hadd -f6 -v 0 ${JOB_NAME}/${OUTPUTFILE}.root QuadScint_{$SEED..$SEED_END}.root | |
else | |
for ((i=0;i<N_PROC;i++)) | |
do | |
# seed | |
SEED_JOB=$[SEED+i] | |
cp QuadScint_${SEED_JOB}.root ${JOB_NAME}/${OUTPUTFILE}_${SEED_JOB}.root | |
done | |
fi | |
if $CLEAN_THREAD_OUTPUT | |
then | |
eval rm QuadScint_{$SEED..$SEED_END}.root | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment