Jpp 19.3.0-rc.2
the software that should make you happy
Loading...
Searching...
No Matches
plot-acoustics-fit.sh
Go to the documentation of this file.
1#!/usr/bin/env zsh
2script=${0##*/}
3
4if [ -z $JPP_DIR ]; then
5 echo "Variable JPP_DIR undefined."
6 exit
7fi
8
9source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
10
11zmodload zsh/mathfunc
12
13set_variable DEBUG 2
14set_variable WORKDIR ${TMPDIR:-/tmp}/
15set_variable STAGE \*
16set_variable: PRECISION ACOUSTICS_PRECISION 0.1
17set_variable: FORMAT GRAPHICS_FORMAT gif
18set_variable+ BATCH GRAPHICS_BATCH -B
19
20if do_usage $*; then
21 usage "$script <directory> [stage]"\
22 "\nInput directory corresponds to location of stage files of a pre-calibration procedure."
23fi
24
25case $# in
26 2) set_variable STAGE $2;&
27 1) set_variable DIR $1;;
28 *) fatal "Wrong number of arguments."
29esac
30
31for INPUT_FILE in `eval ls -rt $DIR/stage-${STAGE}.log`; do
32
33 grep "\‍(chi2\[.\]\|gradient\|string:\‍)" $INPUT_FILE > $WORKDIR/stage.txt
34
35 awk 'BEGIN { YMAX = 0.0; YMIN = 1.0e10 } END { printf "%9.5f %9.5f", YMIN, YMAX} /chi2/ { if ($3 < 1.0e10) { if ($3 < YMIN) { YMIN = $3}; if ($3 > YMAX) { YMAX = $3 }}}' $WORKDIR/stage.txt | read YMIN YMAX
36
37 let "Y = $YMAX - $YMIN"
38 let "YMAX = floor(($YMAX + 0.1 * ($Y)) / $PRECISION + 1.0) * $PRECISION"
39 let "YMIN = floor(($YMIN - 0.1 * ($Y)) / $PRECISION - 0.0) * $PRECISION"
40
41 if (( $YMIN < 0.0 )); then
42 let "YMIN = 0.0"
43 fi
44
45 OUTPUT_FILES=()
46
47 awk '/chi2\[.\]/ { printf "%5d %9.5f\n", NR, $3 }' $WORKDIR/stage.txt > $WORKDIR/g1.txt
48
49 JGraph \
50 -f $WORKDIR/g1.txt \
51 -o $WORKDIR/g1.root \
52 -T $TITLE
53
54 OUTPUT_FILES+=$WORKDIR/g1.root
55
56 awk \
57 -v YMIN=$YMIN \
58 -v YMAX=$YMAX \
59 '/gradient/ { printf "%5d %9.5f %5d %9.5f\n", NR, YMIN, NR, YMAX }' $WORKDIR/stage.txt > $WORKDIR/L1.txt
60
61 JLine \
62 -p $WORKDIR/L1.txt \
63 -o $WORKDIR/L1.root \
64 -@ "width = 1" \
65 -@ "style = 2"
66
67 OUTPUT_FILES+=$WORKDIR/L1.root
68
69 if [[ $INPUT_FILE == *b.log ]] || [[ $INPUT_FILE == *B.log ]]; then
70
71 awk \
72 -v YMIN=$YMIN \
73 -v YMAX=$YMAX \
74 'BEGIN { NL = 1 } /string:/ { printf "%5d %9.5f %04d\n", NL, YMAX * 0.97, $2; NL = NR + 1 }' $WORKDIR/stage.txt > $WORKDIR/T1.txt
75
76 awk \
77 -v YMIN=$YMIN \
78 -v YMAX=$YMAX \
79 'BEGIN { NL = 1 } /string:/ { printf "%5d %9.5f %5d %9.5f\n", NL, YMIN, NL, YMAX; NL = NR + 1 }' $WORKDIR/stage.txt > $WORKDIR/L2.txt
80
81 JText \
82 -p $WORKDIR/T1.txt \
83 -o $WORKDIR/T1.root \
84 -@ "align = 12" \
85 -@ "size = 15"
86
87 JLine \
88 -p $WORKDIR/L2.txt \
89 -o $WORKDIR/L2.root \
90 -@ "width = 1" \
91 -@ "style = 1"
92
93 OUTPUT_FILES+=$WORKDIR/T1.root
94 OUTPUT_FILES+=$WORKDIR/L2.root
95 fi
96
97 JPlot1D \
98 -w 1200x600 \
99 -f${^OUTPUT_FILES}":.*" \
100 -> "step" \
101 -\^ "#chi^{2}/NDF" \
102 -y "$YMIN $YMAX" \
103 -N "X 505" \
104 -G Y \
105 -S 0.5 \
106 -T "${${INPUT_FILE:t}:r}" \
107 -o ${${INPUT_FILE:t}:r}.$FORMAT $BATCH
108
109 rm -f $WORKDIR/stage.txt $WORKDIR/{g,L,M,T}{1,2}.{txt,root}
110done