Jpp
JShowerPostFit.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 #
3 # \author adomi
4 #
5 script=${0##*/}
6 
7 # ------------------------------------------------------------------------------------------
8 #
9 # Utility script to plot fit results.
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 positionfit completefit)
26 
27 set_variable DEBUG 2
28 set_variable WORKDIR ./
29 set_variable OPTION N
30 set_variable INPUT_FILE $WORKDIR/${APPLICATIONS[-1]}.root
31 set_variable MUONS
32 
33 if ( do_usage $* ); then
34  usage "$script [input file [working directory [muons]]]"
35 fi
36 
37 case $# in
38  3) set_variable MUONS $3;&
39  2) set_variable WORKDIR $2;&
40  1) set_variable INPUT_FILE $1;;
41 esac
42 
43 
44 # Number of prefits as a function of application (0 = all)
45 
46 typeset -A NUMBER_OF_FIT
47 
48 NUMBER_OF_FIT=( \
49  prefit 1 \
50  positionfit 1 \
51  completefit 1)
52 
53 # Fit application identifier
54 
55 typeset -A ENUMERATION
56 
57 ENUMERATION=( \
58  prefit 101 \
59  positionfit 102 \
60  completefit 103)
61 
62 # user interaction
63 
64 for APP in $APPLICATIONS[*]; do
65 
66  set_variable OUTPUT_FILE $WORKDIR/jshowerpostfit\[${APP}\].root
67 
68  if [[ -f $OUTPUT_FILE ]]; then
69  rm -i $OUTPUT_FILE
70  fi
71 done
72 
73 
74 # processing
75 
76 for APP in $APPLICATIONS[*]; do
77 
78  set_variable OUTPUT_FILE $WORKDIR/jshowerpostfit\[${APP}\].root
79 
80  if [[ ! -f $OUTPUT_FILE ]]; then
81 
82  echo "************************************************ " $MUONS
83  if [[ -z $MUONS ]]; then
84  JShowerPostfit \
85  -f $INPUT_FILE \
86  -o $OUTPUT_FILE \
87  -N ${NUMBER_OF_FIT[${APP}]} \
88  -A ${ENUMERATION[${APP}]} \
89  -O ${OPTION} \
90  -d ${DEBUG} --!
91  else
92  JShowerPostfit \
93  -f $INPUT_FILE \
94  -o $OUTPUT_FILE \
95  -N ${NUMBER_OF_FIT[${APP}]} \
96  -A ${ENUMERATION[${APP}]} \
97  -I \
98  -O ${OPTION} \
99  -d ${DEBUG} --!
100  fi
101  fi
102 
103 done
104 
105 
106 if (( 1 )); then
107 
108  JPlot1D \
109  -f $WORKDIR/jshowerpostfit\[completefit\].root:hx \
110  -> "angle wrt electron [deg]" \
111  -\^ "number of events [a.u]" \
112  -XX \
113  -L TR -T "" \
114  -o $WORKDIR/angle.gif
115 
116 fi
117 
118 
119 if (( 1 )); then
120 
121  QUANTILES="0.33 0.5 0.66"
122 
123  for APP in prefit positionfit completefit; do
124 
125  JQuantiles2D \
126  -f $WORKDIR/jshowerpostfit\[${APP}\].root:h2 \
127  -Q "$QUANTILES" \
128  -o $WORKDIR/jshowerquantiles\[${APP}\].root
129  done
130 
131  typeset -A LABEL
132  typeset -A LOGX
133 
134  LABEL[E]="E [GeV]"
135  LABEL[LINE]="E [GeV]"
136  LABEL[LOGE]="E [GeV]"
137  LABEL[N]="number of DOMs"
138 
139  LOGX[E]="-XX"
140  LOGX[LINE]=""
141  LOGX[LOGE]="-XX"
142  LOGX[N]=""
143 
144 
145  JPlot1D \
146  -f $WORKDIR/jshowerquantiles\[completefit\].root:h21\.\* \
147  -> $LABEL[${OPTION}] $LOGX[${OPTION}] \
148  -\^ " [deg]" \
149  -y "1e-2 1e1" \
150  -Y \
151  -L TR -T "" \
152  -o $WORKDIR/jshowerresolution.gif
153 
154 fi
155 
156 if (( 0 )); then
157 
158  JPlot1D \
159  -f $WORKDIR/jshowerpostfit\[prefit].root:he \
160  -f $WORKDIR/jshowerpostfit\[positionfi].root:he \
161  -f $WORKDIR/jshowerpostfit\[completefit].root:he \
162  -XX \
163  -y "0 1.1" \
164  -> "E [GeV]" \
165  -\^"efficiency" \
166  -L TR -T "" \
167  -o $WORKDIR/jshowerefficiency.gif
168 
169 fi
170 
171 
172 if (( 1 )); then
173 
174  JPlot1D \
175  -f $WORKDIR/jshowerpostfit\[completefit\].root:e0 \
176  -f $WORKDIR/jshowerpostfit\[completefit\].root:e1 \
177  -f $WORKDIR/jshowerpostfit\[completefit\].root:e2 \
178  -\^ "number of events [a.u.]" \
179  -> "log10(E_{fit}/GeV)" \
180  -XX -T "" \
181  -o $WORKDIR/jshowerenergy.gif
182 
183 fi
184 
185 if (( 1 )); then
186 
187  JPlot2D \
188  -f $WORKDIR/jshowerpostfit\[completefit\].root:ee \
189  -O COLZ \
190  -XX -YY -T "" \
191  -> "E_{true} [GeV]" \
192  -< "E_{fit} [GeV]" \
193  -o $WORKDIR/jshoweree.gif
194 
195 fi
196 
197 if (( 1 )); then
198 
199  JFit \
200  -f $WORKDIR/postfit\[energy\].root:er \
201  -o $WORKDIR/fit.root \
202  -F "[0]*exp(-0.5*(x-[1])*(x-[1])/([2]*[2]))" \
203  -@ "p0 = 0.8*GetMaximum" \
204  -@ "p1 = 0.0" \
205  -@ "p2 = 0.4" \
206  -x "-0.8 +0.8"
207 
208  JPlot1D \
209  -f $WORKDIR/fit.root:er \
210  -> "log10(E_{fit}/E_{true})" \
211  -T "" -o $WORKDIR/er.gif
212 
213 fi
214 
215 
216 if (( 1 )); then
217 
218  JPlot2D \
219  -f $WORKDIR/postfit\[start\].root:ha \
220  -OCOLZ \
221  -> "R^{2} [m^{2}]" \
222  -< "z [m]" \
223  -T "" -o $WORKDIR/ha.gif
224 
225 fi
226 
227 
228 if (( 1 )); then
229 
230  JPlot2D \
231  -f $WORKDIR/postfit\[start\].root:hb \
232  -OCOLZ \
233  -> "R^{2} [m^{2}]" \
234  -< "z [m]" \
235  -T "" -o $WORKDIR/hb.gif
236 
237 fi
238 
239 
240 if (( 1 )); then
241 
242  JPlot1D \
243  -f $WORKDIR/postfit\[start\].root:hz \
244  -> "z [m]" \
245  -\^ "number of events [a.u]" \
246  -L TR -T "" \
247  -o $WORKDIR/z.gif
248 
249 fi