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>"
35 set_variable URL $argv[1]
36 if [[ $argv[1] == "http"* ]]; then
37 set_variable DETECTOR singleDOM_OMGsim.detx
38 elif [[ "${URL//git/}" != "$URL" ]]; then
39 set_variable DETECTOR data/singleDOM_OMGsim.detx
42 set_variable DETECTOR $argv[1]
44 set_variable FILE_NAME_PATTERN $argv[2]
45 set_variable OMGSIM $argv[3]
47 fatal "Wrong number of arguments."
50function getv() { JPrintProperties -f $OMGSIM -k $1 -@ "cc=#" }
54let "BUFFER[K40Glass] = `getv glass.K40 ` * `getv mass.glass`"
55let "BUFFER[Th232Glass] = `getv glass.Th232` * `getv mass.glass`"
56let "BUFFER[U238Glass] = `getv glass.U238 ` * `getv mass.glass`"
57let "BUFFER[K40Water] = `getv water.K40 ` * (4.0/3.0) * acos(-1.0) * (`getv radius.K40 `**3 - `getv radius.glass`**3)"
58let "BUFFER[U238Water] = `getv water.U238 ` * (4.0/3.0) * acos(-1.0) * (`getv radius.U238`**3 - `getv radius.glass`**3)"
62for KEY VALUE in ${(kv)BUFFER}; do
63 printf "%-12s %12.3e [Bq]\n" $KEY $VALUE
66if [[ "${URL//git/}" != "$URL" ]]; then
68 echo Downloading data from $URL:
76elif [[ "$URL" != "" ]]; then
78 echo Downloading data from $URL:
80 for KEY in ${(k)BUFFER}; do
81 if [[ ! -f ${FILE_NAME_PATTERN/\%/${KEY}} ]]; then
82 wget $URL/${FILE_NAME_PATTERN/\%/${KEY}}
86 echo Downloading detector file from $URL:
87 if [[ ! -f $DETECTOR ]]; then
93cat>$WORKDIR/PMT_parameters.A.txt<<EOF
97%.PunderAmplified = 0.0
101#realistic PMT simulation (R12199)
102cat>$WORKDIR/PMT_parameters.B.txt<<EOF
106%.PunderAmplified = 0.05
110OPTIONS=("BELL_SHAPE = 2.0;")
116 for KEY VALUE in ${(kv)BUFFER}; do
118 set_variable INPUT_FILE ${FILE_NAME_PATTERN/\%/$KEY}
119 set_variable OUTPUT_FILE \[${KEY}\].$TYPE.root
121 echo "Processing type $A $INPUT_FILE -> $KEY.$TYPE.log"
124 $JPP_DIR/examples/JCalibrate/JOMGsim \
127 -o $WORKDIR/$OUTPUT_FILE \
129 -P $WORKDIR/PMT_parameters.$TYPE.txt \
132 -d $DEBUG --! >& $KEY.$TYPE.log &
140 -f$WORKDIR/\[${^KEYS}\].$TYPE.root:'^M$' \
143 -o $WORKDIR/M.$TYPE.root >& /dev/null
146 -f$WORKDIR/\[${^KEYS}\].$TYPE.root:1.2R \
149 -o $WORKDIR/\[Total\].$TYPE.root >& /dev/null
153 JPrintRange2D -f $WORKDIR/\[Total\].$TYPE.root:$H2 | read X1 Y1 Z1 X2 Y2 Z2
154 JPrintResult -f $WORKDIR/\[Total\].$TYPE.root:$H2 -F GetNbinsX -F GetNbinsY | read NX NY
155 JPrintResult -f $WORKDIR/\[Total\].$TYPE.root:$H2 -F GetSumOfWeights | read W
157 echo "Processing $KEYS[*] -> $TYPE.log"
159 printf "Total rate %7.3f [Hz]\n" $(($W * ($Y2 - $Y1) / ($NY - 1))) >> $TYPE.log
161 echo "KM3NeT.hh" >> $TYPE.log
162 $JPP_DIR/examples/JGizmo/JPrint1D \
163 -f $WORKDIR/M.$TYPE.root:M | awk 'NR==3,NR==6 { printf ", %6.2f", $4 }' >> $TYPE.log
168 -f $WORKDIR/\[Total\].$TYPE.root \
170 -o $WORKDIR/fit.$TYPE.root \