9# ------------------------------------------------------------------------------------------
11# Utility script to process OMGsim output.
13# ------------------------------------------------------------------------------------------
15if [ -z $JPP_DIR ]; then
16 echo "Variable JPP_DIR undefined."
20source $JPP_DIR/setenv.sh $JPP_DIR
24set_variable: DEBUG OMGSIM_WORKDIR 2
25set_variable: WORKDIR OMGSIM_WORKDIR ./
26set_variable: FACTOR OMGSIM_FACTOR 0.5
27set_variable: RECYCLING OMGSIM_RECYCLING 1
30 usage "$script (<detector file>|URL) <file name pattern> <OMGsim data card>"
34 if [[ $argv[1] == "http"* ]]; then
35 set_variable URL $argv[1]
36 set_variable DETECTOR singleDOM_OMGsim.detx
39 set_variable DETECTOR $argv[1]
41 set_variable FILE_NAME_PATTERN $argv[2]
42 set_variable OMGSIM $argv[3]
44 fatal "Wrong number of arguments."
47function getv() { JPrintProperties -f $OMGSIM -k $1 -@ "cc=#" }
51let "BUFFER[K40Glass] = `getv glass.K40 ` * `getv mass.glass`"
52let "BUFFER[Th232Glass] = `getv glass.Th232` * `getv mass.glass`"
53let "BUFFER[U238Glass] = `getv glass.U238 ` * `getv mass.glass`"
54let "BUFFER[K40Water] = `getv water.K40 ` * (4.0/3.0) * acos(-1.0) * (`getv radius.K40 `**3 - `getv radius.glass`**3)"
55let "BUFFER[U238Water] = `getv water.U238 ` * (4.0/3.0) * acos(-1.0) * (`getv radius.U238`**3 - `getv radius.glass`**3)"
59for KEY VALUE in ${(kv)BUFFER}; do
60 printf "%-12s %12.3e [Bq]\n" $KEY $VALUE
63if [[ "$URL" != "" ]]; then
65 echo Downloading data from $URL:
67 for KEY in ${(k)BUFFER}; do
68 if [[ ! -f ${FILE_NAME_PATTERN/\%/${KEY}} ]]; then
69 wget $URL/${FILE_NAME_PATTERN/\%/${KEY}}
73 echo Downloading detector file from $URL:
74 if [[ ! -f $DETECTOR ]]; then
80cat>$WORKDIR/PMT_parameters.A.txt<<EOF
84%.PunderAmplified = 0.0
88#realistic PMT simulation (R12199)
89cat>$WORKDIR/PMT_parameters.B.txt<<EOF
93%.PunderAmplified = 0.05
97OPTIONS=("BELL_SHAPE = 2.0;")
103 for KEY VALUE in ${(kv)BUFFER}; do
105 set_variable INPUT_FILE ${FILE_NAME_PATTERN/\%/$KEY}
106 set_variable OUTPUT_FILE \[${KEY}\].$TYPE.root
108 echo "Processing type $A $INPUT_FILE -> $KEY.$TYPE.log"
111 $JPP_DIR/examples/JCalibrate/JOMGsim \
114 -o $WORKDIR/$OUTPUT_FILE \
116 -P $WORKDIR/PMT_parameters.$TYPE.txt \
119 -d $DEBUG --! >& $KEY.$TYPE.log &
127 -f$WORKDIR/\[${^KEYS}\].$TYPE.root:'^M$' \
130 -o $WORKDIR/M.$TYPE.root >& /dev/null
133 -f$WORKDIR/\[${^KEYS}\].$TYPE.root:1.2R \
136 -o $WORKDIR/\[Total\].$TYPE.root >& /dev/null
140 JPrintRange2D -f $WORKDIR/\[Total\].$TYPE.root:$H2 | read X1 Y1 Z1 X2 Y2 Z2
141 JPrintResult -f $WORKDIR/\[Total\].$TYPE.root:$H2 -F GetNbinsX -F GetNbinsY | read NX NY
142 JPrintResult -f $WORKDIR/\[Total\].$TYPE.root:$H2 -F GetSumOfWeights | read W
144 echo "Processing $KEYS[*] -> $TYPE.log"
146 printf "Total rate %7.3f [Hz]\n" $(($W * ($Y2 - $Y1) / ($NY - 1))) >> $TYPE.log
148 echo "KM3NeT.hh" >> $TYPE.log
149 $JPP_DIR/examples/JGizmo/JPrint1D \
150 -f $WORKDIR/M.$TYPE.root:M | awk 'NR==3,NR==6 { printf ", %6.2f", $4 }' >> $TYPE.log
155 -f $WORKDIR/\[Total\].$TYPE.root \
157 -o $WORKDIR/fit.$TYPE.root \