Jpp 20.0.0-rc.2
the software that should make you happy
Loading...
Searching...
No Matches
JMuonPostfit.sh
Go to the documentation of this file.
1#!/usr/bin/env zsh
2#
3# \author mdejong, bofearraigh
4#
5script=${0##*/}
6
7# ------------------------------------------------------------------------------------------
8#
9# Utility script to plot fit results of track reconstruction chain for Monte Carlo data.
10#
11# ------------------------------------------------------------------------------------------
12
13
14if [ -z $JPP_DIR ]; then
15 echo "Variable JPP_DIR undefined."
16 exit
17fi
18
19
20source $JPP_DIR/setenv.sh $JPP_DIR
21
22
23# list of applications in the processing chain
24
25APPLICATIONS=(prefit simplex gandalf energy start)
26
27set_variable: DEBUG RECONSTRUCTION_DEBUG 2
28set_variable: WORKDIR RECONSTRUCTION_WORKDIR ./
29set_variable: NUMBER_OF_EVENTS RECONSTRUCTION_NUMBER_OF_EVENTS $((2**31))
30set_variable: OPTION RECONSTRUCTION_OPTION LOGN
31set_variable: PRIMARY RECONSTRUCTION_PRIMARY muon
32
33set_variable: PALETTE GRAPHICS_PALETTE 57
34set_variable: FORMAT GRAPHICS_FORMAT gif
35set_variable+ BATCH GRAPHICS_BATCH -B
36
37
38if do_usage $*; then
39 usage "$script (input file)+"\
40 "\nThe option can be LINE, LOGE, LINN or LOGN and the primary muon or neutrino,"\
41 "\nwhere E refers to the energy of the primary and N refers to the number of optical modules with a triggered hit."
42fi
43
44if (( $# == 0 )); then
45 fatal "Wrong number of arguments"
46fi
47
48set_array INPUT_FILES ${argv[*]}
49
50
51# Number of prefits as a function of application (0 = all)
52
53typeset -A NUMBER_OF_FIT
54
55NUMBER_OF_FIT=(prefit 0
56 simplex 0
57 gandalf 1
58 energy 1
59 start 1)
60
61
62# Fit application identifier
63
64typeset -A ENUMERATION
65
66ENUMERATION=(prefit 1
67 simplex 2
68 gandalf 3
69 energy 4
70 start 5)
71
72case $OPTION in
73 LINE) set_variable LABEL "E [GeV]";
74 set_variable LOG ;
75 set_variable LOGX ;
76 set_variable LOGY ;
77 set_variable E_E "E_{fit} - E_{#mu} [GeV]";;
78 LOGE) set_variable LABEL "E [GeV]";
79 set_variable LOG -XX;
80 set_variable LOGX -XX;
81 set_variable LOGY -YY;
82 set_variable E_E "log10(E_{fit}/E_{#mu})";;
83 LINN) set_variable LABEL "number of modules";
84 set_variable LOG ;
85 set_variable LOGX -XX;
86 set_variable LOGY -YY;
87 set_variable E_E "log10(E_{fit}/E_{#mu})";;
88 LOGN) set_variable LABEL "number of modules";
89 set_variable LOG -XXX;
90 set_variable LOGX -XX;
91 set_variable LOGY -YY;
92 set_variable E_E "log10(E_{fit}/E_{#mu})";;
93 *) fatal "Invalid option $OPTION"
94esac
95
96
97# user interaction
98
99for APP in $APPLICATIONS[*]; do
100
101 set_variable OUTPUT_FILE ${WORKDIR}/postfit\[${APP}\].root
102
103 if [[ -f $OUTPUT_FILE ]]; then
104 rm -i $OUTPUT_FILE
105 fi
106done
107
108
109# processing
110
111for APP in $APPLICATIONS[*]; do
112
113 set_variable OUTPUT_FILE $WORKDIR/postfit\[${APP}\].root
114
115 if [[ ! -f $OUTPUT_FILE ]]; then
116
117 JMuonPostfit \
118 -f"${INPUT_FILES[*]}" \
119 -o ${OUTPUT_FILE} \
120 -n ${NUMBER_OF_EVENTS} \
121 -N ${NUMBER_OF_FIT[${APP}]} \
122 -A ${ENUMERATION[${APP}]} \
123 -O ${OPTION} \
124 -p ${PRIMARY} \
125 -d ${DEBUG} --!
126 fi
127done
128
129if (( 1 )); then
130
131 JPlot1D \
132 -f $WORKDIR/postfit\[prefit\].root:hx \
133 -f $WORKDIR/postfit\[simplex\].root:hx \
134 -f $WORKDIR/postfit\[gandalf\].root:hx \
135 -> "angle [deg]" \
136 -\^ "number of events [a.u.]" \
137 -XX \
138 -L TR -T "" \
139 -o $WORKDIR/angle.$FORMAT $BATCH
140fi
141
142if (( 1 )); then
143
144 QUANTILES="0.33 0.5 0.66"
145
146 for APP in prefit simplex gandalf; do
147
148 JQuantiles2D \
149 -f $WORKDIR/postfit\[${APP}\].root:h2 \
150 -Q "$QUANTILES" \
151 -o $WORKDIR/quantiles\[${APP}\].root
152 done
153
154 JPlot1D \
155 -f $WORKDIR/quantiles\[prefit\].root:h21 \
156 -f $WORKDIR/quantiles\[simplex\].root:h21 \
157 -f $WORKDIR/quantiles\[gandalf\].root:h21 \
158 -> "$LABEL" $LOG \
159 -\^ "resolution [deg]" \
160 -y "1e-2 1e2" \
161 -Y \
162 -O "][" \
163 -G Y \
164 -L TR -T "" \
165 -o $WORKDIR/resolution.$FORMAT $BATCH
166
167 JPlot1D \
168 -f $WORKDIR/quantiles\[gandalf\].root:h20 \
169 -f $WORKDIR/quantiles\[gandalf\].root:h21 \
170 -f $WORKDIR/quantiles\[gandalf\].root:h22 \
171 -> "$LABEL" $LOG \
172 -\^ "resolution [deg]" \
173 -y "1e-2 1e2" \
174 -Y \
175 -O "][" \
176 -G Y \
177 -T "gandalf" \
178 -o $WORKDIR/gandalf.$FORMAT $BATCH
179fi
180
181if (( 1 )); then
182
183 JPlot1D \
184 -f $WORKDIR/postfit\[energy\].root:E_0 \
185 -f $WORKDIR/postfit\[energy\].root:E_1 \
186 -f $WORKDIR/postfit\[energy\].root:E_2 \
187 -\^ "number of events [a.u.]" \
188 -> "E_{#mu} [GeV]" $LOGX \
189 -T "" \
190 -o $WORKDIR/energy.$FORMAT $BATCH
191fi
192
193if (( 1 )); then
194
195 JConvertToPDF2D \
196 -f $WORKDIR/postfit\[energy\].root:ExE \
197 -O NY \
198 -o $WORKDIR/pdf.root
199
200 JPlot2D \
201 -f $WORKDIR/pdf.root:ExE \
202 -O COLZ -p $PALETTE \
203 -> "E_{#mu} [GeV]" $LOGX \
204 -< "E_{fit} [GeV]" $LOGY \
205 -Z \
206 -T "" \
207 -o $WORKDIR/ee.$FORMAT $BATCH
208
209 rm -f $WORKDIR/pdf.root
210fi
211
212if (( 1 )); then
213
214 JFit \
215 -f $WORKDIR/postfit\[energy\].root:E_E \
216 -o $WORKDIR/fit.root \
217 -F "[0]*exp(-0.5*(x-[1])*(x-[1])/([2]*[2]))" \
218 -@ "p0 = 0.8*GetMaximum" \
219 -@ "p1 = 0.0" \
220 -@ "p2 = 0.5"
221
222 JPlot1D \
223 -f $WORKDIR/fit.root:E_E \
224 -> "$E_E" \
225 -T "" -o $WORKDIR/er.$FORMAT $BATCH
226
227 rm -f $WORKDIR/fit.root
228fi
229
230if (( 1 )); then
231
232 JPlot2D \
233 -f $WORKDIR/postfit\[energy\].root:Va \
234 -O COLZ -p $PALETTE \
235 -> "R^{2} [m^{2}]" \
236 -< "z [m]" \
237 -N "X 505" \
238 -Z -T "" -o $WORKDIR/ha.$FORMAT $BATCH
239fi
240
241
242if (( 1 )); then
243
244 JPlot2D \
245 -f $WORKDIR/postfit\[energy\].root:Vb \
246 -O COLZ -p $PALETTE \
247 -> "R^{2} [m^{2}]" \
248 -< "z [m]" \
249 -N "X 505" \
250 -Z -T "" -o $WORKDIR/hb.$FORMAT $BATCH
251fi
252
253if (( 1 )); then
254
255 JPlot1D \
256 -f $WORKDIR/postfit\[start\].root:hz0 \
257 -f $WORKDIR/postfit\[start\].root:hz1 \
258 -> "#Deltaz [m]" \
259 -\^ "number of events [a.u.]" \
260 -L TR -T "" \
261 -o $WORKDIR/z.$FORMAT $BATCH
262fi
263