Jpp  15.0.0
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 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 
30 set_variable: FORMAT GRAPHICS_FORMAT gif
31 set_variable+ BATCH GRAPHICS_BATCH -B
32 
33 if do_usage $*; then
34  usage "$script (input file)+ [option]]"\
35  "\nWhere option can be N, E, LINE, LOGE."\
36  "\nNote that if more than one input file is specified, all other arguments must be provided."
37 fi
38 
39 case $# in
40  2) set_variable OPTION $2;&
42  0) fatal "Wrong number of arguments.";;
45 esac
46 
47 
48 # Number of prefits as a function of application (0 = all)
49 
50 typeset -A NUMBER_OF_FIT
51 
53  prefit 0 \
54  simplex 0 \
55  gandalf 1 \
56  energy 1 \
57  start 1)
58 
59 
60 # Fit application identifier
61 
62 typeset -A ENUMERATION
63 
64 ENUMERATION=( \
65  prefit 1 \
66  simplex 2 \
67  gandalf 3 \
68  energy 4 \
69  start 5)
70 
71 
72 typeset -A LABEL
73 typeset -A LOG
74 typeset -A LOGX
75 typeset -A LOGY
76 
77 LABEL[E]="E [GeV]"
78 LABEL[LINE]="E [GeV]"
79 LABEL[LOGE]="E [GeV]"
80 LABEL[N]="number of modules"
81 
82 LOG[E]=-XX
83 LOG[LINE]=
84 LOG[LOGE]=-XX
85 LOG[N]=
86 
87 LOGX[E]=-XX
88 LOGX[LINE]=
89 LOGX[LOGE]=-XX
90 LOGX[N]=-XX
91 
92 LOGY[E]=-YY
93 LOGY[LINE]=
94 LOGY[LOGE]=-YY
95 LOGY[N]=-YY
96 
97 # user interaction
98 
99 for 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
106 done
107 
108 
109 # processing
110 
111 for 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_FILE} \
119  -o ${OUTPUT_FILE} \
120  -N ${NUMBER_OF_FIT[${APP}]} \
121  -A ${ENUMERATION[${APP}]} \
122  -O ${OPTION} \
123  -d ${DEBUG} --!
124  fi
125 done
126 
127 if (( 1 )); then
128 
129  JPlot1D \
130  -f $WORKDIR/postfit\[prefit\].root:hx \
131  -f $WORKDIR/postfit\[simplex\].root:hx \
132  -f $WORKDIR/postfit\[gandalf\].root:hx \
133  -\> "angle [deg]" \
134  -\^ "number of events [a.u.]" \
135  -XX \
136  -L TR -T "" \
137  -o $WORKDIR/angle.$FORMAT $BATCH
138 
139 fi
140 
141 if (( 1 )); then
142 
143  QUANTILES="0.33 0.5 0.66"
144 
145  for APP in prefit simplex gandalf; do
146 
147  JQuantiles2D \
148  -f $WORKDIR/postfit\[${APP}\].root:h2 \
149  -Q "$QUANTILES" \
150  -o $WORKDIR/quantiles\[${APP}\].root
151  done
152 
153  JPlot1D \
154  -f $WORKDIR/quantiles\[prefit\].root:h21 \
155  -f $WORKDIR/quantiles\[simplex\].root:h21 \
156  -f $WORKDIR/quantiles\[gandalf\].root:h21 \
157  -\> "$LABEL[${OPTION}]" $LOG[${OPTION}] \
158  -\^ "resolution (reco muon) [deg]" \
159  -y "1e-2 1e2" \
160  -Y \
161  -L TR -T "" \
162  -o $WORKDIR/resolution.$FORMAT $BATCH
163 
164 fi
165 
166 if (( 1 )); then
167 
168  JPlot1D \
169  -f $WORKDIR/postfit\[energy\].root:E_0 \
170  -f $WORKDIR/postfit\[energy\].root:E_1 \
171  -f $WORKDIR/postfit\[energy\].root:E_2 \
172  -\^ "number of events [a.u.]" \
173  -\> "E_{#mu} [GeV]" $LOGX[${OPTION}] \
174  -T "" \
175  -o $WORKDIR/energy.$FORMAT $BATCH
176 
177 fi
178 
179 if (( 1 )); then
180 
181  JConvertToPDF2D \
182  -f $WORKDIR/postfit\[energy\].root:ExE \
183  -O NY \
184  -o $WORKDIR/pdf.root
185 
186  JPlot2D \
187  -f $WORKDIR/pdf.root:ExE \
188  -O COLZ \
189  -\> "E_{#mu} [GeV]" $LOGX[${OPTION}] \
190  -\< "E_{fit} [GeV]" $LOGY[${OPTION}] \
191  -T "" \
192  -o $WORKDIR/ee.$FORMAT $BATCH
193 
194 fi
195 
196 if (( 1 )); then
197 
198  JFit \
199  -f $WORKDIR/postfit\[energy\].root:E_E \
200  -o $WORKDIR/fit.root \
201  -F "[0]*exp(-0.5*(x-[1])*(x-[1])/([2]*[2]))" \
202  -@ "p0 = 0.8*GetMaximum" \
203  -@ "p1 = GetMean" \
204  -@ "p2 = GetRMS"
205 
206  JPlot1D \
207  -f $WORKDIR/fit.root:E_E \
208  -\> "log10(E_{fit}/E_{true}) muon" \
209  -T "" -o $WORKDIR/er.$FORMAT $BATCH
210 fi
211 
212 if (( 1 )); then
213 
214  JPlot2D \
215  -f $WORKDIR/postfit\[energy\].root:Va \
216  -O COLZ \
217  -\> "R^{2} [m^{2}]" \
218  -\< "z [m]" \
219  -T "" -o $WORKDIR/ha.$FORMAT $BATCH
220 
221 fi
222 
223 
224 if (( 1 )); then
225 
226  JPlot2D \
227  -f $WORKDIR/postfit\[energy\].root:Vb \
228  -OCOLZ \
229  -\> "R^{2} [m^{2}]" \
230  -\< "z [m]" \
231  -T "" -o $WORKDIR/hb.$FORMAT $BATCH
232 
233 fi
234 
235 if (( 1 )); then
236 
237  mv $WORKDIR/postfit\[start\].root $WORKDIR/tmp.root
238 
239  JPlot1D \
240  -f $WORKDIR/tmp.root:hz0 \
241  -f $WORKDIR/tmp.root:hz1 \
242  -\> "#Deltaz [m]" \
243  -\^ "number of events [a.u.]" \
244  -L TR -T "" \
245  -o $WORKDIR/z.$FORMAT $BATCH
246 
247  mv $WORKDIR/tmp.root $WORKDIR/postfit\[start\].root
248 
249 fi
then usage $script< detector file >< detectorfile > nIf the range of floors is the first detector file is aligned to the second before the comparison fi case set_variable RANGE $argv[3]
then usage $script< detector >< run >< outputfile > fi case set_variable OPTION
Definition: JTuna.sh:26
Q(UTCMax_s-UTCMin_s)-livetime_s
then JMuonPostfit f
then usage $script< detector file >< inputfile > nUtility script to create PDF and CDF of transition time distribution fi case set_variable WORKDIR
Definition: JLegolas.sh:31
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
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
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 usage E
Definition: JMuonPostfit.sh:35
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
do $DIR JTransitTime o
Definition: JTransitTime.sh:44
then awk F
* usage
then usage LINE
Definition: JMuonPostfit.sh:35
then for APP in event gandalf start energy
Definition: JMuonMCEvt.sh:44
&set_variable OUTPUT_FILE
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonPath.sh:47
then JCalibrateToT a
Definition: JTuneHV.sh:116
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:128
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:41
set_variable NUMBER_OF_ITERATIONS set_variable EPSILON cat acoustics_fit_parameters txt<< EOF $CONFIGURATION[*]Nmin=3;sigma_s=100.0e-6;stdev=10.0;mestimator=0;fixStrings=0;EOF for STRING in $STRINGS[*];do#fit stretching and(z) position of given string set_variable DETECTOR_TMP/tmp/detector_A.datx JEditDetector-a $DETECTOR-o $DETECTOR_TMP-r $STRING JEditDetector-a $DETECTOR-o $DETECTOR-k $STRING for MUL in 0.005 0.001;do DX_M=0.2 for((N=0;$N< $NUMBER_OF_ITERATIONS;++N));do CHI2[3]=$CHI2[1] fitPositionOfString $STRING Z $DX_M fitStretchingOfString $STRING $MUL if(($CHI2[3]-$CHI2[1]< $EPSILON));then break fi done if(($N >=$NUMBER_OF_ITERATIONS));then printf"warning: reached maximum number of iterations %d - converenge %7.3f\n"$N $(($CHI2[3]-$CHI2[1])) fi done JMergeDetector-a $DETECTOR-a $DETECTOR_TMP-o $DETECTOR rm-f $DETECTOR_TMP JConvertDetectorFormat-a $DETECTOR-o $DETECTOR-r-d 0 > &dev null done
*set_variable INPUT_FILE $argv[1,-2] set_variable OPTION $argv[-1] esac typeset A NUMBER_OF_FIT NUMBER_OF_FIT
Definition: JMuonPostfit.sh:52
script
Definition: JAcoustics.sh:2
source $JPP_DIR setenv csh $JPP_DIR eval JShellParser o a A
then QUANTILES
then rm i $OUTPUT_FILE fi done for APP in $APPLICATIONS[*]