Jpp  16.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  1) set_array INPUT_FILES $1;;
41  0) fatal "Wrong number of arguments.";;
42  *) set_array INPUT_FILES $argv[1,-2]
44 esac
45 
46 # Number of prefits as a function of application (0 = all)
47 
48 typeset -A NUMBER_OF_FIT
49 
51  prefit 0 \
52  simplex 0 \
53  gandalf 1 \
54  energy 1 \
55  start 1)
56 
57 
58 # Fit application identifier
59 
60 typeset -A ENUMERATION
61 
62 ENUMERATION=( \
63  prefit 1 \
64  simplex 2 \
65  gandalf 3 \
66  energy 4 \
67  start 5)
68 
69 case $OPTION in
70  E) set_variable LABEL "E [GeV]";
74  set_variable E_E "log10(E_{fit}/E_{#mu})";;
75  LINE) set_variable LABEL "E [GeV]";
79  set_variable E_E "E_{fit} - E_{#mu} [GeV]";;
80  LOGE) set_variable LABEL "E [GeV]";
81  set_variable LOG -XX;
82  set_variable LOGX -XX;
83  set_variable LOGY -YY;
84  set_variable E_E "log10(E_{fit}/E_{#mu})";;
85  N) set_variable LABEL "number of modules";
87  set_variable LOGX -XX;
88  set_variable LOGY -YY;
89  set_variable E_E "log10(E_{fit}/E_{#mu})";;
90  *) fatal "Invalid option $OPTION"
91 esac
92 
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_FILES[*]}" \
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.$FORMAT $BATCH
135 fi
136 
137 if (( 1 )); then
138 
139  QUANTILES="0.33 0.5 0.66"
140 
141  for APP in prefit simplex gandalf; do
142 
143  JQuantiles2D \
144  -f $WORKDIR/postfit\[${APP}\].root:h2 \
145  -Q "$QUANTILES" \
146  -o $WORKDIR/quantiles\[${APP}\].root
147  done
148 
149  JPlot1D \
150  -f $WORKDIR/quantiles\[prefit\].root:h21 \
151  -f $WORKDIR/quantiles\[simplex\].root:h21 \
152  -f $WORKDIR/quantiles\[gandalf\].root:h21 \
153  -\> "$LABEL" $LOG \
154  -\^ "resolution (reco muon) [deg]" \
155  -y "1e-2 1e2" \
156  -Y \
157  -L TR -T "" \
158  -o $WORKDIR/resolution.$FORMAT $BATCH
159 fi
160 
161 if (( 1 )); then
162 
163  JPlot1D \
164  -f $WORKDIR/postfit\[energy\].root:E_0 \
165  -f $WORKDIR/postfit\[energy\].root:E_1 \
166  -f $WORKDIR/postfit\[energy\].root:E_2 \
167  -\^ "number of events [a.u.]" \
168  -\> "E_{#mu} [GeV]" $LOGX \
169  -T "" \
170  -o $WORKDIR/energy.$FORMAT $BATCH
171 fi
172 
173 if (( 1 )); then
174 
175  JConvertToPDF2D \
176  -f $WORKDIR/postfit\[energy\].root:ExE \
177  -O NY \
178  -o $WORKDIR/pdf.root
179 
180  JPlot2D \
181  -f $WORKDIR/pdf.root:ExE \
182  -O COLZ \
183  -\> "E_{#mu} [GeV]" $LOGX \
184  -\< "E_{fit} [GeV]" $LOGY \
185  -T "" \
186  -o $WORKDIR/ee.$FORMAT $BATCH
187 fi
188 
189 if (( 1 )); then
190 
191  JFit \
192  -f $WORKDIR/postfit\[energy\].root:E_E \
193  -o $WORKDIR/fit.root \
194  -F "[0]*exp(-0.5*(x-[1])*(x-[1])/([2]*[2]))" \
195  -@ "p0 = 0.8*GetMaximum" \
196  -@ "p1 = GetMean" \
197  -@ "p2 = GetRMS"
198 
199  JPlot1D \
200  -f $WORKDIR/fit.root:E_E \
201  -\> "$E_E" \
202  -T "" -o $WORKDIR/er.$FORMAT $BATCH
203 fi
204 
205 if (( 1 )); then
206 
207  JPlot2D \
208  -f $WORKDIR/postfit\[energy\].root:Va \
209  -O COLZ \
210  -\> "R^{2} [m^{2}]" \
211  -\< "z [m]" \
212  -N "X 505" \
213  -T "" -o $WORKDIR/ha.$FORMAT $BATCH
214 fi
215 
216 
217 if (( 1 )); then
218 
219  JPlot2D \
220  -f $WORKDIR/postfit\[energy\].root:Vb \
221  -OCOLZ \
222  -\> "R^{2} [m^{2}]" \
223  -\< "z [m]" \
224  -N "X 505" \
225  -T "" -o $WORKDIR/hb.$FORMAT $BATCH
226 fi
227 
228 if (( 1 )); then
229 
230  JPlot1D \
231  -f $WORKDIR/postfit\[start\].root:hz0 \
232  -f $WORKDIR/postfit\[start\].root:hz1 \
233  -\> "#Deltaz [m]" \
234  -\^ "number of events [a.u.]" \
235  -L TR -T "" \
236  -o $WORKDIR/z.$FORMAT $BATCH
237 fi
then usage $script< detector >< run >< outputfile > fi case set_variable OPTION
Definition: JTuna.sh:26
Q(UTCMax_s-UTCMin_s)-livetime_s
*set_variable DETECTOR_ID $argv[1] set_array RUNS $argv[2,-2]
Definition: JDataQuality.sh:24
then usage E
Definition: JMuonPostfit.sh:35
TFitResultPtr Fit(TH1D *h)
Definition: JNanobeacon.hh:14
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
set_variable LOGY YY
Definition: JMuonPostfit.sh:73
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
set_variable LOG
Definition: JMuonPostfit.sh:76
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 rm i $OUTPUT_FILE fi done for APP in $APPLICATIONS[*]
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
set_variable LOGX
Definition: JMuonPostfit.sh:77
* usage
set_variable LOG XX
Definition: JMuonPostfit.sh:71
then JConvertDetectorFormat a $DETECTOR[1] o
then usage LINE
Definition: JMuonPostfit.sh:35
do sput $STRING $FLOOR sget MODULE INPUT_FILES
Definition: JCanberra.sh:73
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
*set_array INPUT_FILES $argv[1,-2] set_variable OPTION $argv[-1] esac typeset A NUMBER_OF_FIT NUMBER_OF_FIT
Definition: JMuonPostfit.sh:50
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
script
Definition: JAcoustics.sh:2
*fatal Wrong option $OPTION
set_variable LOGY
Definition: JMuonPostfit.sh:78
then QUANTILES