Jpp - the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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.
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 
31 set_variable+ BACKGROUND RECONSTRUCTION_BACKGROUND -B
32 
33 if do_usage $*; then
34  usage "$script [input file [working directory [option]]]"\
35  "\nWhere option can be N, E, LINE, LOGE."
36 fi
37 
38 case $# in
39  3) set_variable OPTION $3;&
42 esac
43 
44 
45 # Number of prefits as a function of application (0 = all)
46 
47 typeset -A NUMBER_OF_FIT
48 
50  prefit 0 \
51  simplex 0 \
52  gandalf 1 \
53  energy 1 \
54  start 1)
55 
56 
57 # Fit application identifier
58 
59 typeset -A ENUMERATION
60 
61 ENUMERATION=( \
62  prefit 1 \
63  simplex 2 \
64  gandalf 3 \
65  energy 4 \
66  start 5)
67 
68 
69 typeset -A LABEL
70 typeset -A LOG
71 typeset -A LOGX
72 typeset -A LOGY
73 
74 LABEL[E]="E [GeV]"
75 LABEL[LINE]="E [GeV]"
76 LABEL[LOGE]="E [GeV]"
77 LABEL[N]="number of modules"
78 
79 LOG[E]=-XX
80 LOG[LINE]=
81 LOG[LOGE]=-XX
82 LOG[N]=
83 
84 LOGX[E]=-XX
85 LOGX[LINE]=
86 LOGX[LOGE]=-XX
87 LOGX[N]=-XX
88 
89 LOGY[E]=-YY
90 LOGY[LINE]=
91 LOGY[LOGE]=-YY
92 LOGY[N]=-YY
93 
94 # user interaction
95 
96 for APP in $APPLICATIONS[*]; do
97 
98  set_variable OUTPUT_FILE $WORKDIR/postfit\[${APP}\].root
99 
100  if [[ -f $OUTPUT_FILE ]]; then
101  rm -i $OUTPUT_FILE
102  fi
103 done
104 
105 
106 # processing
107 
108 for APP in $APPLICATIONS[*]; do
109 
110  set_variable OUTPUT_FILE $WORKDIR/postfit\[${APP}\].root
111 
112  if [[ ! -f $OUTPUT_FILE ]]; then
113 
114  JMuonPostfit \
115  -f $INPUT_FILE \
116  -o $OUTPUT_FILE \
117  -N ${NUMBER_OF_FIT[${APP}]} \
118  -A ${ENUMERATION[${APP}]} \
119  -O ${OPTION} \
120  -d ${DEBUG} --!
121  fi
122 done
123 
124 if (( 1 )); then
125 
126  JPlot1D \
127  -f $WORKDIR/postfit\[prefit\].root:hx \
128  -f $WORKDIR/postfit\[simplex\].root:hx \
129  -f $WORKDIR/postfit\[gandalf\].root:hx \
130  -\> "angle [deg]" \
131  -\^ "number of events [a.u.]" \
132  -XX \
133  -L TR -T "" \
134  -o $WORKDIR/angle.gif $BACKGROUND
135 
136 fi
137 
138 if (( 1 )); then
139 
140  QUANTILES="0.33 0.5 0.66"
141 
142  for APP in prefit simplex gandalf; do
143 
144  JQuantiles2D \
145  -f $WORKDIR/postfit\[${APP}\].root:h2 \
146  -Q "$QUANTILES" \
147  -o $WORKDIR/quantiles\[${APP}\].root
148  done
149 
150  JPlot1D \
151  -f $WORKDIR/quantiles\[prefit\].root:h21 \
152  -f $WORKDIR/quantiles\[simplex\].root:h21 \
153  -f $WORKDIR/quantiles\[gandalf\].root:h21 \
154  -\> "$LABEL[${OPTION}]" $LOG[${OPTION}] \
155  -\^ "resolution (reco muon) [deg]" \
156  -y "1e-2 1e2" \
157  -Y \
158  -L TR -T "" \
159  -o $WORKDIR/resolution.gif $BACKGROUND
160 
161 fi
162 
163 if (( 1 )); then
164 
165  JPlot1D \
166  -f $WORKDIR/postfit\[energy\].root:E_0 \
167  -f $WORKDIR/postfit\[energy\].root:E_1 \
168  -f $WORKDIR/postfit\[energy\].root:E_2 \
169  -\^ "number of events [a.u.]" \
170  -\> "E_{#mu} [GeV]" $LOGX[${OPTION}] \
171  -T "" \
172  -o $WORKDIR/energy.gif $BACKGROUND
173 
174 fi
175 
176 if (( 1 )); then
177 
178  JConvertToPDF2D \
179  -f $WORKDIR/postfit\[energy\].root:ExE \
180  -O NY \
181  -o $WORKDIR/pdf.root
182 
183  JPlot2D \
184  -f $WORKDIR/pdf.root:ExE \
185  -O COLZ \
186  -\> "E_{#mu} [GeV]" $LOGX[${OPTION}] \
187  -\< "E_{fit} [GeV]" $LOGY[${OPTION}] \
188  -T "" \
189  -o $WORKDIR/ee.gif $BACKGROUND
190 
191 fi
192 
193 if (( 1 )); then
194 
195  JFit \
196  -f $WORKDIR/postfit\[energy\].root:E_E \
197  -o $WORKDIR/fit.root \
198  -F "[0]*exp(-0.5*(x-[1])*(x-[1])/([2]*[2]))" \
199  -@ "p0 = 0.8*GetMaximum" \
200  -@ "p1 = GetMean" \
201  -@ "p2 = GetRMS"
202 
203  JPlot1D \
204  -f $WORKDIR/fit.root:E_E \
205  -\> "log10(E_{fit}/E_{true}) muon" \
206  -T "" -o $WORKDIR/er.gif $BACKGROUND
207 fi
208 
209 if (( 1 )); then
210 
211  JPlot2D \
212  -f $WORKDIR/postfit\[energy\].root:Va \
213  -O COLZ \
214  -\> "R^{2} [m^{2}]" \
215  -\< "z [m]" \
216  -T "" -o $WORKDIR/ha.gif $BACKGROUND
217 
218 fi
219 
220 
221 if (( 1 )); then
222 
223  JPlot2D \
224  -f $WORKDIR/postfit\[energy\].root:Vb \
225  -OCOLZ \
226  -\> "R^{2} [m^{2}]" \
227  -\< "z [m]" \
228  -T "" -o $WORKDIR/hb.gif $BACKGROUND
229 
230 fi
231 
232 if (( 1 )); then
233 
234  mv $WORKDIR/postfit\[start\].root $WORKDIR/tmp.root
235 
236  JPlot1D \
237  -f $WORKDIR/tmp.root:hz0 \
238  -f $WORKDIR/tmp.root:hz1 \
239  -\> "#Deltaz [m]" \
240  -\^ "number of events [a.u.]" \
241  -L TR -T "" \
242  -o $WORKDIR/z.gif $BACKGROUND
243 
244  mv $WORKDIR/tmp.root $WORKDIR/postfit\[start\].root
245 
246 fi
then usage $script< detector >< run >< outputfile > fi case set_variable OPTION
Definition: JTuna.sh:26
Q(UTCMax_s-UTCMin_s)-livetime_s
esac typeset A NUMBER_OF_FIT NUMBER_OF_FIT
Definition: JMuonPostfit.sh:49
TFitResultPtr Fit(TH1D *h)
Definition: JNanobeacon.hh:14
set_variable INPUT_FILE
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR APPLICATIONS
Definition: JMuonPostfit.sh:25
exit
Definition: JPizza.sh:36
then fatal Wrong number of arguments fi set_variable STRING $argv[1] set_variable DETECTORXY_TXT $WORKDIR $DETECTORXY_TXT tail read X Y CHI2 RMS printf optimum n $X $Y $CHI2 $RMS awk v Y
then JPizza f
Definition: JPizza.sh:46
then echo
do set_variable APP
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable
Definition: JAcoustics.sh:20
do set_variable OUTPUT_DIRECTORY $WORKDIR T
then usage $script[input file[working directory[option]]] nWhere option can be LINE
Definition: JMuonPostfit.sh:35
do $DIR JTransitTime o
Definition: JTransitTime.sh:44
then awk F
* usage
then JFileTuna f $INPUT_FILE
Definition: file-Tuna.sh:66
then for APP in event gandalf start energy
Definition: JMuonMCEvt.sh:42
&set_variable OUTPUT_FILE
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonPath.sh:45
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
then display $WORKDIR
Definition: plot-Domino.sh:127
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable DEBUG set_variable WORKDIR tmp set_variable JDAQ_TIMESLICE JDAQTimeslice if do_usage *then usage $script< detector file >< inputfile > fi case set_variable WORKDIR
Definition: JLegolas.sh:23
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY source JAcoustics sh $DETECTOR_ID CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
Definition: JCanberra.sh:38
then usage $script[input file[working directory[option]]] nWhere option can be N
Definition: JMuonPostfit.sh:35
script
Definition: JAcoustics.sh:2
source $JPP_DIR setenv csh $JPP_DIR eval JShellParser o a A
then usage $script[input file[working directory[option]]] nWhere option can be E
Definition: JMuonPostfit.sh:35
esac done
Definition: JAddHDE.sh:21
then QUANTILES
then rm i $OUTPUT_FILE fi done for APP in $APPLICATIONS[*]