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
32 #set_variable BACKGROUND -B
33 
34 
35 if ( do_usage $* ); then
36  usage "$script [input file [working directory [option]]]"\
37  "\nWhere option can be N, E, LINE, LOGE."
38 fi
39 
40 case $# in
41  3) set_variable OPTION $3;&
44 esac
45 
46 
47 # Number of prefits as a function of application (0 = all)
48 
49 typeset -A NUMBER_OF_FIT
50 
52  prefit 0 \
53  simplex 0 \
54  gandalf 1 \
55  energy 1 \
56  start 1)
57 
58 
59 # Fit application identifier
60 
61 typeset -A ENUMERATION
62 
63 ENUMERATION=( \
64  prefit 1 \
65  simplex 2 \
66  gandalf 3 \
67  energy 4 \
68  start 5)
69 
70 
71 typeset -A LABEL
72 typeset -A LOG
73 typeset -A LOGX
74 typeset -A LOGY
75 
76 LABEL[E]="E [GeV]"
77 LABEL[LINE]="E [GeV]"
78 LABEL[LOGE]="E [GeV]"
79 LABEL[N]="number of modules"
80 
81 LOG[E]=-XX
82 LOG[LINE]=
83 LOG[LOGE]=-XX
84 LOG[N]=
85 
86 LOGX[E]=-XX
87 LOGX[LINE]=
88 LOGX[LOGE]=-XX
89 LOGX[N]=-XX
90 
91 LOGY[E]=-YY
92 LOGY[LINE]=
93 LOGY[LOGE]=-YY
94 LOGY[N]=-YY
95 
96 # user interaction
97 
98 for APP in $APPLICATIONS[*]; do
99 
100  set_variable OUTPUT_FILE $WORKDIR/postfit\[${APP}\].root
101 
102  if [[ -f $OUTPUT_FILE ]]; then
103  rm -i $OUTPUT_FILE
104  fi
105 done
106 
107 
108 # processing
109 
110 for APP in $APPLICATIONS[*]; do
111 
112  set_variable OUTPUT_FILE $WORKDIR/postfit\[${APP}\].root
113 
114  if [[ ! -f $OUTPUT_FILE ]]; then
115 
116  JMuonPostfit \
117  -f $INPUT_FILE \
118  -o $OUTPUT_FILE \
119  -N ${NUMBER_OF_FIT[${APP}]} \
120  -A ${ENUMERATION[${APP}]} \
121  -O ${OPTION} \
122  -d ${DEBUG} --!
123  fi
124 done
125 
126 if (( 1 )); then
127 
128  JPlot1D \
129  -f $WORKDIR/postfit\[prefit\].root:hx \
130  -f $WORKDIR/postfit\[simplex\].root:hx \
131  -f $WORKDIR/postfit\[gandalf\].root:hx \
132  -\> "angle [deg]" \
133  -\^ "number of events [a.u]" \
134  -XX \
135  -L TR -T "" \
136  -o $WORKDIR/angle.gif $BACKGROUND
137 
138 fi
139 
140 if (( 1 )); then
141 
142  QUANTILES="0.33 0.5 0.66"
143 
144  for APP in prefit simplex gandalf; do
145 
146  JQuantiles2D \
147  -f $WORKDIR/postfit\[${APP}\].root:h2 \
148  -Q "$QUANTILES" \
149  -o $WORKDIR/quantiles\[${APP}\].root
150  done
151 
152  JPlot1D \
153  -f $WORKDIR/quantiles\[prefit\].root:h21 \
154  -f $WORKDIR/quantiles\[simplex\].root:h21 \
155  -f $WORKDIR/quantiles\[gandalf\].root:h21 \
156  -\> "$LABEL[${OPTION}]" $LOG[${OPTION}] \
157  -\^ "resolution (reco muon) [deg]" \
158  -y "1e-2 1e2" \
159  -Y \
160  -L TR -T "" \
161  -o $WORKDIR/resolution.gif $BACKGROUND
162 
163 fi
164 
165 if (( 1 )); then
166 
167  JPlot1D \
168  -f $WORKDIR/postfit\[energy\].root:E_0 \
169  -f $WORKDIR/postfit\[energy\].root:E_1 \
170  -f $WORKDIR/postfit\[energy\].root:E_2 \
171  -\^ "number of events [a.u.]" \
172  -\> "E_{#mu} [GeV]" $LOGX[${OPTION}] \
173  -T "" \
174  -o $WORKDIR/energy.gif $BACKGROUND
175 
176 fi
177 
178 if (( 1 )); then
179 
180  JConvertToPDF2D \
181  -f $WORKDIR/postfit\[energy\].root:ExE \
182  -O NY \
183  -o $WORKDIR/pdf.root
184 
185  JPlot2D \
186  -f $WORKDIR/pdf.root:ExE \
187  -O COLZ \
188  -\> "E_{#mu} [GeV]" $LOGX[${OPTION}] \
189  -\< "E_{fit} [GeV]" $LOGY[${OPTION}] \
190  -T "" \
191  -o $WORKDIR/ee.gif $BACKGROUND
192 
193 fi
194 
195 if (( 1 )); then
196 
197  JFit \
198  -f $WORKDIR/postfit\[energy\].root:E_E \
199  -o $WORKDIR/fit.root \
200  -F "[0]*exp(-0.5*(x-[1])*(x-[1])/([2]*[2]))" \
201  -@ "p0 = 0.8*GetMaximum" \
202  -@ "p1 = GetMean" \
203  -@ "p2 = GetRMS"
204 
205  JPlot1D \
206  -f $WORKDIR/fit.root:E_E \
207  -\> "log10(E_{fit}/E_{true}) muon" \
208  -T "" -o $WORKDIR/er.gif $BACKGROUND
209 fi
210 
211 if (( 1 )); then
212 
213  JPlot2D \
214  -f $WORKDIR/postfit\[energy\].root:Va \
215  -O COLZ \
216  -\> "R^{2} [m^{2}]" \
217  -\< "z [m]" \
218  -T "" -o $WORKDIR/ha.gif $BACKGROUND
219 
220 fi
221 
222 
223 if (( 1 )); then
224 
225  JPlot2D \
226  -f $WORKDIR/postfit\[energy\].root:Vb \
227  -OCOLZ \
228  -\> "R^{2} [m^{2}]" \
229  -\< "z [m]" \
230  -T "" -o $WORKDIR/hb.gif $BACKGROUND
231 
232 fi
233 
234 if (( 1 )); then
235 
236  mv $WORKDIR/postfit\[start\].root $WORKDIR/tmp.root
237 
238  JPlot1D \
239  -f $WORKDIR/tmp.root:hz0 \
240  -f $WORKDIR/tmp.root:hz1 \
241  -\> "#Deltaz [m]" \
242  -\^ "number of events [a.u]" \
243  -L TR -T "" \
244  -o $WORKDIR/z.gif $BACKGROUND
245 
246  mv $WORKDIR/tmp.root $WORKDIR/postfit\[start\].root
247 
248 fi
void set_variable(const std::string &name, const std::string &value)
Set environment variable.
esac typeset A NUMBER_OF_FIT NUMBER_OF_FIT
Definition: JMuonPostfit.sh:51
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
do set_array DAQHEADER JPrintDAQHeader f
Definition: JTuneHV.sh:79
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 echo
do set_variable APP
do set_variable OUTPUT_DIRECTORY $WORKDIR T
then usage $script[input file[working directory[option]]] nWhere option can be LINE
Definition: JMuonPostfit.sh:37
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 display $WORKDIR
Definition: plot-Domino.sh:127
then usage $script< detector >< run >< outputfile > fi case set_variable OPTION
Definition: JTuna.sh:26
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:37
script
Definition: JAcoustics.sh:2
then usage $script< detector file >< inputfile > fi case set_variable WORKDIR
Definition: JLegolas.sh:28
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:37
esac done
Definition: JAddHDE.sh:21
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62
then QUANTILES
then rm i $OUTPUT_FILE fi done for APP in $APPLICATIONS[*]