Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
JGedanken.sh
Go to the documentation of this file.
1#!/usr/bin/env zsh
2#
3# \author mdejong
4version=1.0
5script=${0##*/}
6
7# ------------------------------------------------------------------------------------------
8#
9# Auxiliary script for Gedanken experiment.
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
19
20zmodload zsh/mathfunc
21
22set_variable: DEBUG SIRENE_DEBUG 2
23set_variable: WORKDIR SIRENE_WORKDIR ${TMPDIR:-/tmp}/
24set_variable NUMBER_OF_EVENTS 1000000
25
26# detector
27
28set_variable R_M 25.0
29set_variable Z_M 50.0
30set_variable MODULE $R_M 0.0 $Z_M # position
31
32# particle
33
34set_variable E_GEV 20 # energy
35set_variable POS 0.0 0.0 0.0 # position
36set_variable DIR 0.0 0.0 1.0 # direction
37set_variable TYPE 13 # PDG
38
39# graphics
40
41set_variable: FORMAT GRAPHICS_FORMAT gif
42set_variable+ BATCH GRAPHICS_BATCH -B
43
44if do_usage $*; then
45 usage "$script [number of events]"
46fi
47
48case $# in
49 1) set_variable NUMBER_OF_EVENTS $1;;
50esac
51
52set_variable DETECTOR $WORKDIR/detector.detx
53
54if [[ ! -f $DETECTOR ]]; then
55
56 JModule \
57 -D 1001 \
58 -M 1 \
59 -P "$MODULE" \
60 -o $DETECTOR \
61 -d $DEBUG
62fi
63
64if [[ ! -f $WORKDIR/gedanken.root ]]; then
65
66 $JPP_DIR/examples/JSirene/JGedanken \
67 -o $WORKDIR/gedanken.root \
68 -P "$POS" \
69 -D "$DIR" \
70 -E $E_GEV \
71 -T $TYPE \
72 -n $NUMBER_OF_EVENTS \
73 -a $DETECTOR \
74 -d $DEBUG
75fi
76
77if [[ ! -f $WORKDIR/sirene.root ]]; then
78
79 JSirene \
80 -a $DETECTOR \
81 -f $WORKDIR/gedanken.root \
82 -o $WORKDIR/sirene.root \
83 -F $JPP_DATA/I%p.dat \
84 -N 0 \
85 -d $DEBUG
86fi
87
88if [[ ! -f $WORKDIR/domino.root ]]; then
89
90 $JPP_DIR/examples/JSirene/JDomino \
91 -a $DETECTOR \
92 -f $WORKDIR/sirene.root \
93 -o $WORKDIR/domino.root \
94 -d $DEBUG
95fi
96
97JPlot1D \
98 -f $WORKDIR/"domino.root:h\[%\]" \
99 -y "1.0e-6 1.0e0" -Y \
100 -> "#Deltat [ns]" \
101 -\^ "dP/dt npe/ns" \
102 -T "" \
103 -O "HIST][" \
104 -o pdf.$FORMAT $BATCH
105
106set_variable PDF $JPP_DATA/J%p.dat
107set_variable EPS 1.0E-6
108set_variable PI $((acos(-1)))
109
110# constrain angle between [epsilon, pi - epsilon]
111#
112function constrain()
113{
114 if (( $1 > $PI - $EPS )); then
115 echo $(($PI - $EPS))
116 elif (( $1 < $EPS )); then
117 echo $EPS
118 else
119 echo $1
120 fi
121}
122
123for id in {1..31}; do
124
125 echo "Generating graphics PMT $id"
126
127 getPMT -a $DETECTOR -p $id | read ID X Y Z DX DY DZ T0 STATUS
128
129 let "THETA = acos($DZ)"
130
131 if (( $DX > +$EPS )); then
132 let "PHI = atan(fabs($DY/$DX))"
133 elif (( $DX < -$EPS )); then
134 let "PHI = $PI - atan(fabs($DY/$DX))"
135 else
136 let "PHI = 0.5*$PI"
137 fi
138
139 set_variable THETA `constrain $THETA`
140 set_variable PHI `constrain $PHI`
141
142 JPlotPDF \
143 -f ${PDF/\%/1} \
144 -f ${PDF/\%/2} \
145 -f ${PDF/\%/3} \
146 -f ${PDF/\%/4} \
147 -f ${PDF/\%/5} \
148 -f ${PDF/\%/6} \
149 -D "$THETA $PHI" \
150 -R $R_M -E $E_GEV \
151 -H "860 -10 850" \
152 -o $WORKDIR/f1\[${id}\].root
153
154 set_variable TITLE `printf "PMT[%d] (%5.3f,%5.3f)" $id $THETA $PHI`
155
156 JPlot1D \
157 -f $WORKDIR/"domino.root:h\[${id}\]" \
158 -f $WORKDIR/f1\[${id}\].root:h0 \
159 -y "1.0e-6 1.0e0" -Y \
160 -> "#Deltat [ns]" \
161 -\^ "dP/dt npe/ns" \
162 -T "$TITLE" \
163 -O "HIST][" \
164 -o $WORKDIR/pdf_${id}.$FORMAT $BATCH
165done
166
167montage \
168 -tile 8x4 \
169 -geometry +0+0 \
170 $WORKDIR/pdf_{1..31}.$FORMAT \
171 PDF.$FORMAT >& /dev/null