Jpp test-rotations-old-533-g2bdbdb559
the software that should make you happy
Loading...
Searching...
No Matches
plot-perth.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: PRECISION RECONSTRUCTION_PRECISION 0.1
16set_variable: FORMAT GRAPHICS_FORMAT gif
17set_variable+ BATCH GRAPHICS_BATCH -B
18
19if do_usage $*; then
20 usage "$script <input file>"\
21 "\nThe input file corresponds to the log file of JPerth."
22fi
23
24if (( $# != 1 )); then
25 fatal "Wrong number of arguments."
26fi
27
28set_variable INPUT_FILE $1
29
30grep "\‍(chi2\[.\]\|gradient\‍)" $INPUT_FILE > $WORKDIR/perth.txt
31
32OUTPUT_FILES=()
33
34awk '/chi2\[.\]/ { printf "%5d %9.5f\n", NR, -$3 }' $WORKDIR/perth.txt > $WORKDIR/g1.txt
35awk '/gradient/ { printf "%5d %9.5f\n", NR, $2 }' $WORKDIR/perth.txt > $WORKDIR/g2.txt
36
37JGraph \
38 -f $WORKDIR/g1.txt \
39 -o $WORKDIR/g1.root \
40 -T $TITLE
41
42awk 'BEGIN { YMAX = -1.0e10; YMIN = +1.0e10 } END { printf "%9.5f %9.5f", YMIN, YMAX} { if ($2 < YMIN) { YMIN = $2 }; if ($2 > YMAX) { YMAX = $2 }}' $WORKDIR/g1.txt | read YMIN YMAX
43
44
45let "Y = $YMAX - $YMIN"
46let "YMAX = floor(($YMAX + 0.1 * ($Y)) / $PRECISION + 1.0) * $PRECISION"
47let "YMIN = floor(($YMIN - 0.1 * ($Y)) / $PRECISION - 0.0) * $PRECISION"
48
49OUTPUT_FILES+=$WORKDIR/g1.root
50
51awk \
52 -v YMIN=$YMIN \
53 -v YMAX=$YMAX \
54 '/gradient/ { printf "%5d %9.5f %5d %9.5f\n", NR, YMIN, NR, YMAX }' $WORKDIR/perth.txt > $WORKDIR/L1.txt
55
56JLine \
57 -p $WORKDIR/L1.txt \
58 -o $WORKDIR/L1.root \
59 -@ "width = 1" \
60 -@ "style = 2"
61
62OUTPUT_FILES+=$WORKDIR/L1.root
63
64JPlot1D \
65 -w 1200x600 \
66 -f${^OUTPUT_FILES}":.*" \
67 -> "step" \
68 -\^ "likelihood" \
69 -y "$YMIN $YMAX" \
70 -N "X 505" \
71 -G Y \
72 -S 0.5 \
73 -T "${${INPUT_FILE:t}:r}" \
74 -o likelihood.$FORMAT $BATCH
75
76JGraph \
77 -f $WORKDIR/g2.txt \
78 -o $WORKDIR/g2.root \
79 -T $TITLE
80
81awk 'BEGIN { XMAX = -1.0e10; XMIN = +1.0e10 } END { printf "%9.5f %9.5f", XMIN, XMAX} { if ($1 < XMIN) { XMIN = $1 }; if ($1 > XMAX) { XMAX = $1 }}' $WORKDIR/g2.txt | read XMIN XMAX
82awk 'BEGIN { YMAX = -1.0e10; YMIN = +1.0e10 } END { printf "%9.5f %9.5f", YMIN, YMAX} { if ($2 < YMIN) { YMIN = $2 }; if ($2 > YMAX) { YMAX = $2 }}' $WORKDIR/g2.txt | read YMIN YMAX
83
84let "XMIN -= 1.0"
85let "XMAX += 1.0"
86
87let "Y = $YMAX - $YMIN"
88let "YMAX = floor(($YMAX + 0.1 * ($Y)) / $PRECISION + 1.0) * $PRECISION"
89let "YMIN = 0.0"
90
91JPlot1D \
92 -w 1200x600 \
93 -f $WORKDIR/g2.root:\.\* \
94 -> "step" \
95 -\^ "|gradient|" \
96 -x "$XMIN $XMAX" \
97 -y "$YMIN $YMAX" \
98 -N "X 505" \
99 -G Y \
100 -S 0.5 \
101 -T "${${INPUT_FILE:t}:r}" \
102 -o gradient.$FORMAT $BATCH
103
104rm -f $WORKDIR/perth.txt $WORKDIR/{g1,g2,L1}.{txt,root}