Jpp 21.0.0-rc.1-88-g0130508c4
the software that should make you happy
Loading...
Searching...
No Matches
transmittance.sh
Go to the documentation of this file.
1#!/usr/bin/env zsh
2#
3#
4# \author mdejong
5#
6version=1.0
7script=${0##*/}
8
9# ------------------------------------------------------------------------------------------
10#
11# Utility script to process OMGsim output.
12#
13# ------------------------------------------------------------------------------------------
14
15if [ -z $JPP_DIR ]; then
16 echo "Variable JPP_DIR undefined."
17 exit
18fi
19
20source $JPP_DIR/setenv.sh $JPP_DIR
21
22zmodload zsh/mathfunc
23
24set_variable: DEBUG OMGSIM_WORKDIR 2
25set_variable: FACTOR OMGSIM_FACTOR 0.5
26set_variable: RECYCLING OMGSIM_RECYCLING 64
27
28if do_usage $*; then
29 usage "$script <data directory>"
30fi
31
32if (( $# != 1 )); then
33 fatal "Wrong number of arguments."
34fi
35
36set_variable DATA $1
37
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
41
42
43function getv() { JPrintProperties -f $OMGSIM -k $1 -@ "cc=#" }
44
45typeset -A BUFFER
46
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)"
52
53echo Radio activities:
54
55for KEY VALUE in ${(kv)BUFFER}; do
56 printf "%-12s %12.3e [Bq]\n" $KEY $VALUE
57done
58
59Total=(${(k)BUFFER})
60Water=(`echo ${(k)BUFFER} | tr ' ' '\n' | sed -n 's/\‍(.*Water\‍)/\1/p'`)
61Glass=(`echo ${(k)BUFFER} | tr ' ' '\n' | sed -n 's/\‍(.*Glass\‍)/\1/p'`)
62
63
64cat>PMT_parameters.txt<<EOF
65%.TTS_ns = -1.0
66%.gain = 1.0
67%.gainSpread = 0.4
68%.PunderAmplified = 0.05
69%.slewing = 1
70EOF
71
72OPTIONS=("BELL_SHAPE = 2.0;")
73
74
75for KEY VALUE in ${(kv)BUFFER}; do
76
77 set_variable INPUT_FILE ${FILE_NAME_PATTERN/\%/$KEY}
78 set_variable OUTPUT_FILE \[${KEY}\].root
79
80 echo "Processing $INPUT_FILE -> $KEY.log"
81
82 nohup \
83 $JPP_DIR/examples/JCalibrate/JOMGsim \
84 -a $DETECTOR \
85 -f $INPUT_FILE \
86 -o $OUTPUT_FILE \
87 -R $VALUE \
88 -P PMT_parameters.txt \
89 -P "QE = $FACTOR" \
90 -N $RECYCLING \
91 -d $DEBUG --! >& $KEY.log &
92done
93
94wait
95
96H2=1.2R
97
98for Source in Total Water Glass; do
99
100 SOURCE=${(U)Source}
101
102 JOpera2D \
103 -f\[${^${(P)Source}}\].root:$H2 \
104 -u Add \
105 -O = \
106 -o \[$Source\].root >& /dev/null
107
108 JProject2D \
109 -f \[$Source\].root:$H2 \
110 -o \[$Source\].px.root \
111 -P x \
112 -y "-1.0e10 +1.0e10" >& /dev/null
113
114 JFitK40 \
115 -a $DETECTOR \
116 -f \[$Source\].root \
117 -@${^OPTIONS} \
118 -o fit\[$Source\].root \
119 -w \
120 -M > $Source.log
121
122 # fitted function
123
124 eval $SOURCE=\‍(`sed -n 's/parameters\..*\.set(\‍([^)]*\‍));/\1/p' $Source.log`\‍)
125
126done
127
128
129for Source in Water Glass; do
130
131 SOURCE=${(U)Source}
132
133 # ratio of fitted functions
134
135 eval ${SOURCE}\[1\]=$((${(P)${SOURCE}[1]} / $TOTAL[1]))
136
137 for (( i = 2; $i <= 5; i += 1 )); do
138 eval ${SOURCE}\[$i\]=$((${(P)${SOURCE}[$i]} - $TOTAL[$i]))
139 done
140
141 # histogram
142
143 JOpera1D \
144 -f \[$Source\].px.root:\.\* \
145 -f \[Total\].px.root:\.\* \
146 -u Divide \
147 -o R\[$Source\].root >& /dev/null
148
149 # model
150
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]}" \
157 -o M\[$Source\].root
158done
159
160
161function typeout()
162{
163 PARAMETERS=(R p1 p2 p3 p4)
164
165 SOURCE=${(U)1}
166
167 printf "%s:\n" $SOURCE
168
169 for (( i = 1; $i <= ${#PARAMETERS}; i += 1 )); do
170 printf "parameters.%-2s.set(%9.6f);\n" $PARAMETERS[$i] ${(P)${SOURCE}[$i]}
171 done
172}
173
174typeout Total
175typeout Water
176typeout Glass
177
178
179JPlot1D \
180 -w 1200x600 \
181 -f R\[Water\].root:\.\* \
182 -f M\[Water\].root:\.\* \
183 -f R\[Glass\].root:\.\* \
184 -f M\[Glass\].root:\.\* \
185 -g 2 \
186 -> "PMT pair" \
187 -\^ "Ratio" \
188 -O HIST \
189 -T "" \
190 -L TR \
191 -o transmittance.gif