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: FACTOR OMGSIM_FACTOR 0.5
26set_variable: RECYCLING OMGSIM_RECYCLING 64
29 usage "$script <data directory>"
33 fatal "Wrong number of arguments."
38set_variable DETECTOR $DATA/singleDOM_OMGsim.detx
39set_variable FILE_NAME_PATTERN $DATA/DOM%_QE2.root
40set_variable OMGSIM $JPP_DIR/examples/JCalibrate/OMGsim.txt
43function getv() { JPrintProperties -f $OMGSIM -k $1 -@ "cc=#" }
47let "BUFFER[K40Glass] = `getv glass.K40 ` * `getv mass.glass`"
48let "BUFFER[Th232Glass] = `getv glass.Th232` * `getv mass.glass`"
49let "BUFFER[U238Glass] = `getv glass.U238 ` * `getv mass.glass`"
50let "BUFFER[K40Water] = `getv water.K40 ` * (4.0/3.0) * acos(-1.0) * (`getv radius.K40 `**3 - `getv radius.glass`**3)"
51let "BUFFER[U238Water] = `getv water.U238 ` * (4.0/3.0) * acos(-1.0) * (`getv radius.U238`**3 - `getv radius.glass`**3)"
55for KEY VALUE in ${(kv)BUFFER}; do
56 printf "%-12s %12.3e [Bq]\n" $KEY $VALUE
60Water=(`echo ${(k)BUFFER} | tr ' ' '\n' | sed -n 's/\(.*Water\)/\1/p'`)
61Glass=(`echo ${(k)BUFFER} | tr ' ' '\n' | sed -n 's/\(.*Glass\)/\1/p'`)
64cat>PMT_parameters.txt<<EOF
68%.PunderAmplified = 0.05
72OPTIONS=("BELL_SHAPE = 2.0;")
75for KEY VALUE in ${(kv)BUFFER}; do
77 set_variable INPUT_FILE ${FILE_NAME_PATTERN/\%/$KEY}
78 set_variable OUTPUT_FILE \[${KEY}\].root
80 echo "Processing $INPUT_FILE -> $KEY.log"
83 $JPP_DIR/examples/JCalibrate/JOMGsim \
88 -P PMT_parameters.txt \
91 -d $DEBUG --! >& $KEY.log &
98for Source in Total Water Glass; do
103 -f\[${^${(P)Source}}\].root:$H2 \
106 -o \[$Source\].root >& /dev/null
109 -f \[$Source\].root:$H2 \
110 -o \[$Source\].px.root \
112 -y "-1.0e10 +1.0e10" >& /dev/null
116 -f \[$Source\].root \
118 -o fit\[$Source\].root \
124 eval $SOURCE=\(`sed -n 's/parameters\..*\.set(\([^)]*\));/\1/p' $Source.log`\)
129for Source in Water Glass; do
133 # ratio of fitted functions
135 eval ${SOURCE}\[1\]=$((${(P)${SOURCE}[1]} / $TOTAL[1]))
137 for (( i = 2; $i <= 5; i += 1 )); do
138 eval ${SOURCE}\[$i\]=$((${(P)${SOURCE}[$i]} - $TOTAL[$i]))
144 -f \[$Source\].px.root:\.\* \
145 -f \[Total\].px.root:\.\* \
147 -o R\[$Source\].root >& /dev/null
151 $JPP_DIR/examples/JCalibrate/JPlotK40 \
152 -@ "R = ${(P)${SOURCE}[1]}" \
153 -@ "p1 = ${(P)${SOURCE}[2]}" \
154 -@ "p2 = ${(P)${SOURCE}[3]}" \
155 -@ "p3 = ${(P)${SOURCE}[4]}" \
156 -@ "p4 = ${(P)${SOURCE}[5]}" \
163 PARAMETERS=(R p1 p2 p3 p4)
167 printf "%s:\n" $SOURCE
169 for (( i = 1; $i <= ${#PARAMETERS}; i += 1 )); do
170 printf "parameters.%-2s.set(%9.6f);\n" $PARAMETERS[$i] ${(P)${SOURCE}[$i]}
181 -f R\[Water\].root:\.\* \
182 -f M\[Water\].root:\.\* \
183 -f R\[Glass\].root:\.\* \
184 -f M\[Glass\].root:\.\* \