Jpp  master_rocky-43-ge265d140c
the software that should make you happy
JCompareDetector.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 #
3 # \author mdejong
4 #
5 script=${0##*/}
6 
7 # ------------------------------------------------------------------------------------------
8 #
9 # Utility script to compare two detectors and to create graphics output.
10 #
11 # ------------------------------------------------------------------------------------------
12 
13 if [ -z $JPP_DIR ]; then
14  echo "Variable JPP_DIR undefined."
15  exit
16 fi
17 
18 source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
19 
20 set_variable WORKDIR ${TMPDIR:-/tmp}
21 set_variable DEBUG 1
22 set_variable: TIME PRECISION_TIME 0.01 # [ns]
23 set_variable: ANGLE PRECISION_ANGLE 0.01 # [deg]
24 set_variable: POSITION PRECISION_POSITION 0.01 # [m]
25 set_variable: ORIENTATION PRECISION_ORIENTATION 0.01 # [rad]
26 set_variable: FORMAT GRAPHICS_FORMAT gif
27 set_variable+ BATCH GRAPHICS_BATCH -B
28 
29 if do_usage $*; then
30  usage "$script <detector file> <detector file> [<lower floor>-<upper floor>]"\
31  "\nIf the range of floors is specified, the first detector file is aligned to the second before the comparison."\
32  "\nIn this, only modules within the given range of floors are used."
33 fi
34 
35 case $# in
36  3) set_variable RANGE $argv[3];&
37  2) set_array DETECTOR $argv[1] $argv[2];;
38  *) fatal "Wrong number of arguments."
39 esac
40 
41 if [[ "$RANGE" == [0-9]*"-"[0-9]* ]]; then
42 
43  JConvertDetectorFormat \
44  -a $DETECTOR[1] \
45  -o ${TMPDIR:-/tmp}/detector.datx \
46  -d $DEBUG
47 
48  echo "" > ${TMPDIR:-/tmp}/tripod.txt
49 
50  JAlignDetector \
51  -a ${TMPDIR:-/tmp}/detector.datx \
52  -b $DETECTOR[2] \
53  -AO \
54  -r "${RANGE%%-*} ${RANGE##*-}" \
55  -T ${TMPDIR:-/tmp}/tripod.txt \
56  -d $DEBUG --!
57 
58  DETECTOR[1]=${TMPDIR:-/tmp}/detector.datx
59 
60  rm -f ${TMPDIR:-/tmp}/tripod.txt
61 fi
62 
63 JCompareDetector \
64  -a $DETECTOR[1] \
65  -b $DETECTOR[2] \
66  -p "time = $TIME" \
67  -p "angle = $ANGLE" \
68  -p "position = $POSITION" \
69  -p "orientation = $ORIENTATION" \
70  -o $WORKDIR/detector.root \
71  -d $DEBUG --!
72 
73 typeset -A HISTOGRAMS
74 
75 HISTOGRAMS[X2]="#Deltax [m]"
76 HISTOGRAMS[Y2]="#Deltay [m]"
77 HISTOGRAMS[Z2]="#Deltaz [m]"
78 HISTOGRAMS[T2]="#Deltat [ns]"
79 HISTOGRAMS[RMS]="RMS [ns]"
80 HISTOGRAMS[R2]="angle [deg]"
81 
82 for KEY VALUE in ${(@kv)HISTOGRAMS}; do
83 
84  JPlot2D \
85  -f $WORKDIR/detector.root:${KEY} \
86  -> "string" \
87  -< "floor" \
88  -\^ "$VALUE" \
89  -O COLZ \
90  -T "$KEY" \
91  -o ${KEY}.$FORMAT $BATCH
92 
93 done
94 
95 eval `JPrintDetector -a $DETECTOR[1] -O SUMMARY`
96 
97 for KEY in Z X Y; do
98 
99  for (( i = 1; $i <= ${#STRINGS}; ++i )); do
100 
101  set_variable STRING $STRINGS[$i]
102 
103  echo "Processing string $STRING $KEY"
104 
105  let "XMIN = $i - 1 - 0.5"
106  let "XMAX = $i - 1 + 0.5"
107 
108  JProject2D \
109  -f $WORKDIR/detector.root:${KEY}2 \
110  -P Y \
111  -x "$XMIN $XMAX" \
112  -o ${TMPDIR:-/tmp}/py_\[${STRING}\].root \
113  -d 0
114  done
115 
116  JPlot1D \
117  -f${TMPDIR:-/tmp}/py_\[${^STRINGS}\].root:\.\* \
118  -> "floor" \
119  -\^ "#Delta${(L)KEY} [m]" \
120  -x "0.5 18.5" \
121  -y "-10.0 +10.0" \
122  -O "HIST ][" \
123  -CC \
124  -T "" \
125  -L TR \
126  -o ${KEY}1.$FORMAT --! $BATCH
127 done