Jpp test-rotations-old-533-g2bdbdb559
the software that should make you happy
Loading...
Searching...
No Matches
JCompareDetector.sh
Go to the documentation of this file.
1#!/usr/bin/env zsh
2#
3# \author mdejong
4#
5script=${0##*/}
6
7# ------------------------------------------------------------------------------------------
8#
9# Utility script to compare two detectors and to create graphics output.
10#
11# ------------------------------------------------------------------------------------------
12
13if [ -z $JPP_DIR ]; then
14 echo "Variable JPP_DIR undefined."
15 exit
16fi
17
18source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
19
20set_variable WORKDIR ${TMPDIR:-/tmp}
21set_variable DEBUG 1
22set_variable: TIME PRECISION_TIME 0.01 # [ns]
23set_variable: ANGLE PRECISION_ANGLE 0.01 # [deg]
24set_variable: POSITION PRECISION_POSITION 0.01 # [m]
25set_variable: ORIENTATION PRECISION_ORIENTATION 0.01 # [rad]
26set_variable: FORMAT GRAPHICS_FORMAT gif
27set_variable+ BATCH GRAPHICS_BATCH -B
28
29if 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."
33fi
34
35case $# in
36 3) set_variable RANGE $argv[3];&
37 2) set_array DETECTOR $argv[1] $argv[2];;
38 *) fatal "Wrong number of arguments."
39esac
40
41if [[ "$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
61fi
62
63JCompareDetector \
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
73typeset -A HISTOGRAMS
74
75HISTOGRAMS[X2]="#Deltax [m]"
76HISTOGRAMS[Y2]="#Deltay [m]"
77HISTOGRAMS[Z2]="#Deltaz [m]"
78HISTOGRAMS[T2]="#Deltat [ns]"
79HISTOGRAMS[RMS]="RMS [ns]"
80HISTOGRAMS[R2]="angle [rad]"
81
82eval `JPrintDetector -a $DETECTOR[1] -O SUMMARY`
83
84if (( ${#STRINGS} <= 15 )); then
85 let "X = 600"
86 let "Y = 600"
87else
88 let "X = 600 + 6 * (${#STRINGS} - 15)"
89 let "Y = 600"
90fi
91
92for KEY VALUE in ${(@kv)HISTOGRAMS}; do
93
94 JPlot2D \
95 -w ${X}x${Y} \
96 -f $WORKDIR/detector.root:${KEY} \
97 -> "string" \
98 -< "floor" \
99 -\^ "$VALUE" \
100 -O COLZ \
101 -T "$KEY" \
102 -o ${KEY}.$FORMAT $BATCH
103
104done
105
106for KEY in Z X Y; do
107
108 for (( i = 1; $i <= ${#STRINGS}; ++i )); do
109
110 set_variable STRING $STRINGS[$i]
111
112 echo "Processing string $STRING $KEY"
113
114 let "XMIN = $i - 1 - 0.5"
115 let "XMAX = $i - 1 + 0.5"
116
117 JProject2D \
118 -f $WORKDIR/detector.root:${KEY}2 \
119 -P Y \
120 -x "$XMIN $XMAX" \
121 -o ${TMPDIR:-/tmp}/py_\[${STRING}\].root \
122 -d 0
123 done
124
125 JPlot1D \
126 -f${TMPDIR:-/tmp}/py_\[${^STRINGS}\].root:\.\* \
127 -> "floor" \
128 -\^ "#Delta${(L)KEY} [m]" \
129 -x "0.5 18.5" \
130 -y "-10.0 +10.0" \
131 -O "HIST ][" \
132 -CC \
133 -T "" \
134 -L TR \
135 -o ${KEY}1.$FORMAT --! $BATCH
136done