Jpp 19.3.0-rc.2
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
82for 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
93done
94
95eval `JPrintDetector -a $DETECTOR[1] -O SUMMARY`
96
97for 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
127done