Jpp  15.0.3
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  JPlot1D \
238  -f $WORKDIR/postfit\[start\].root:hz0 \
239  -f $WORKDIR/postfit\[start\].root:hz1 \
240  -\> "#Deltaz [m]" \
241  -\^ "number of events [a.u.]" \
242  -L TR -T "" \
243  -o $WORKDIR/z.$FORMAT $BATCH
244 
245 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 nIn only modules within the given range of floors are used 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
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
o $QUALITY_ROOT d $DEBUG!JPlot1D f
Definition: JDataQuality.sh:66
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
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 ${TMPDIR:-/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
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable DEBUG set_variable WORKDIR
Definition: JLegolas.sh:20
then awk F
* usage
then JConvertDetectorFormat a $DETECTOR[1] o
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:42
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
*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
then QUANTILES
then rm i $OUTPUT_FILE fi done for APP in $APPLICATIONS[*]