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