Jpp  master_rocky-40-g5f0272dcd
the software that should make you happy
plot-acoustics-fit.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 script=${0##*/}
3 
4 if [ -z $JPP_DIR ]; then
5  echo "Variable JPP_DIR undefined."
6  exit
7 fi
8 
9 source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
10 
11 zmodload zsh/mathfunc
12 
13 set_variable DEBUG 2
14 set_variable WORKDIR ${TMPDIR:-/tmp}/
15 set_variable STAGE \*
16 set_variable: PRECISION ACOUSTICS_PRECISION 0.1
17 set_variable: FORMAT GRAPHICS_FORMAT gif
18 set_variable+ BATCH GRAPHICS_BATCH -B
19 
20 if do_usage $*; then
21  usage "$script <directory> [stage]"\
22  "\nInput directory corresponds to location of stage files of a pre-calibration procedure."
23 fi
24 
25 case $# in
26  2) set_variable STAGE $2;&
27  1) set_variable DIR $1;;
28  *) fatal "Wrong number of arguments."
29 esac
30 
31 for 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}
110 done