Jpp 20.0.0-rc.8
the software that should make you happy
Loading...
Searching...
No Matches
JMakePDF.sh
Go to the documentation of this file.
1#!/usr/bin/env zsh
2#
3# \author mdejong
4#
5# utility script to produce PDF and CDF tables.
6script=${0##*/}
7
8
9# ------------------------------------------------------------------------------------------
10#
11# Utility script to produce PDF and CDF tables.
12#
13# ------------------------------------------------------------------------------------------
14
15if [ -z $JPP_DIR ]; then
16 echo "Variable JPP_DIR undefined."
17 exit
18fi
19
20source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
21
22set_variable DEBUG 2
23set_variable WORKDIR $JPP_DATA
24set_variable MAKE_PDF 0
25set_variable MERGE_PDF 0
26set_variable MAKE_ZDF 0
27set_variable MAKE_CDF 0
28set_variable CLEAN 0
29set_variable GZIPF 0
30set_variable BACKGROUND
31set_variable WGET
32set_variable RMAX_M 999
33set_variable absorptionLengthFactor 1.0
34set_variable scatteringLengthFactor 1.0
35set_variable: TTS_NS PHYSICS_TTS_NS 2.0
36set_variable EXECUTOR "nohup"
37
38PDF_TYPES=(1 2 3 4 5 6 12 13 14 23 24)
39CDF_TYPES=(1 2 5 6 12 13 14)
40
41
42#
43# Method to print usage of script.
44#
45function __usage__()
46{
47 set_variable DEBUG 3
48
49 usage "$script\n"\
50 "-d <debug level>\n" \
51 "-W <working directory PDF and CDF tables>\n" \
52 "-P create PDF tables\n" \
53 "-M merge PDF tables\n" \
54 "-Z create PDF table for elongated shower\n" \
55 "-C convert PDF tables to CDF tables\n" \
56 "-c clean PDF tables\n" \
57 "-G gzip PDF and CDF tables\n" \
58 "-B parallel running of jobs in background\n" \
59 "-E execute command to be evaluated (standard: nohup, example: echo, using -B as well)\n" \
60 "-w download files from GIT server (e.g. \"http://sftp.km3net.de/data/latest/\")\n" \
61 "-R <maximal distance between muon and PMT>\n" \
62 "Script to generate the PDF/CDFs, merge and zip them;\n" \
63 "standard example: JMakePDF.sh -W \${JPP_DATA} -PMCcG\n" \
64 "List of PDF files:" J${^PDF_TYPES}p.dat.gz "\n" \
65 "List of CDF files:" I${^CDF_TYPES}p.dat.gz "\n" \
66 "Note that the elongated EM-shower PDF is created at option -Z.\n" \
67 "Example to print all necessary programs: JMakePDF.sh -W \${JPP_DATA} -E \"echo\" -PMCB"
68}
69
70#
71# Parse command line options.
72#
73while getopts "d:W:PMZCcGBE:w:hA:S:R:" option; do
74 case "$option" in
75 d) set_variable DEBUG $OPTARG;;
76 W) set_variable WORKDIR $OPTARG;;
77 P) set_variable MAKE_PDF 1;;
78 M) set_variable MERGE_PDF 1;;
79 Z) set_variable MAKE_ZDF 1;;
80 C) set_variable MAKE_CDF 1;;
81 c) set_variable CLEAN 1;;
82 G) set_variable GZIPF 1;;
83 B) set_variable BACKGROUND \&;;
84 E) set_variable EXECUTOR $OPTARG;;
85 w) set_variable WGET $OPTARG;;
86 h) __usage__;;
87 A) set_variable absorptionLengthFactor $OPTARG;;
88 S) set_variable scatteringLengthFactor $OPTARG;;
89 R) set_variable RMAX_M $OPTARG;;
90 esac
91done
92
93# check whether script is already running
94
95BUFFER=`get_pid $script`
96BUFFER=${BUFFER/${$}/}
97
98if [[ -n "${BUFFER/ */}" ]]; then
99 notice "${script} already running <${BUFFER}>"
100 exit 0
101fi
102
103check_variable ROOTSYS JPP_DIR WORKDIR
104
105mkdir -p $WORKDIR
106
107if [[ ! -d $WORKDIR ]]; then
108 fatal "Directory $WORKDIR does not exist."
109fi
110
111status "Start $script"
112
113if [[ -n $WGET ]]; then
114
115 pushd $WORKDIR
116
117 for FILE in J${^PDF_TYPES}p.dat.gz I${^CDF_TYPES}p.dat.gz; do
118
119 status "Checking file $WGET/$FILE"
120
121 if [[ ! -f $FILE ]]; then
122
123 wget $WGET/$FILE -q
124
125 if (( $? != 0 )); then
126
127 status "Checking file $WGET/${FILE:r}"
128
129 wget $WGET/${FILE:r} -q
130
131 if (( $? == 0 )); then
132 gzip ${FILE:r}
133 else
134 fatal "No file $WGET/$FILE or ${FILE:r}"
135 fi
136 fi
137 fi
138 done
139
140 popd
141fi
142
143
144if (( $MAKE_PDF )); then
145
146 check_process JMakePDF JMakePDG pgrep
147
148 if (( 1 )); then
149
150 if [[ ! -f $WORKDIR/J1p.dat ]]; then
151 eval $EXECUTOR JMakePDF -F1 -A $absorptionLengthFactor -S $scatteringLengthFactor -o $WORKDIR/J1p.dat -d $DEBUG $BACKGROUND
152 fi
153 if [[ ! -f $WORKDIR/J2p.dat ]]; then
154 eval $EXECUTOR JMakePDF -F2 -A $absorptionLengthFactor -S $scatteringLengthFactor -o $WORKDIR/J2p.dat -d $DEBUG $BACKGROUND
155 fi
156
157 for R in 0.1 0.3 0.5 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 \
158 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 \
159 22.0 24.0 26.0 28.0 30.0 32.0 34.0 36.0 38.0 40.0 42.0 44.0 46.0 48.0 50.0 \
160 55.0 60.0 65.0 70.0 75.0 80.0 85.0 90.0 95.0 100.0 110.0 120.0 130.0 140.0 150.0 \
161 170.0 190.0 210.0 230.0 250.0 270.0 290.0 310.0 360.0 410.0; do
162
163 if (( $R <= $RMAX_M )); then
164
165 if [[ ! -f $WORKDIR/J3p.dat ]]; then
166 eval $EXECUTOR JMakePDF -F3 -A $absorptionLengthFactor -S $scatteringLengthFactor -R $R -o $WORKDIR/J3p-$R.dat -d $DEBUG $BACKGROUND
167 fi
168 if [[ ! -f $WORKDIR/J4p.dat ]]; then
169 eval $EXECUTOR JMakePDF -F4 -A $absorptionLengthFactor -S $scatteringLengthFactor -R $R -o $WORKDIR/J4p-$R.dat -d $DEBUG $BACKGROUND
170 fi
171 fi
172 done
173
174 if [[ ! -f $WORKDIR/J5p.dat ]]; then
175 eval $EXECUTOR JMakePDF -F5 -A $absorptionLengthFactor -S $scatteringLengthFactor -o $WORKDIR/J5p.dat -d $DEBUG $BACKGROUND
176 fi
177
178 for R in 0.1 0.3 0.5 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 \
179 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 \
180 22.0 24.0 26.0 28.0 30.0 32.0 34.0 36.0 38.0 40.0 42.0 44.0 46.0 48.0 50.0 \
181 55.0 60.0 65.0 70.0 75.0 80.0 85.0 90.0 95.0 100.0 110.0 120.0 130.0 140.0 150.0 \
182 170.0 190.0 210.0 230.0 250.0; do
183
184 if (( $R <= $RMAX_M )); then
185
186 if [[ ! -f $WORKDIR/J6p.dat ]]; then
187 eval $EXECUTOR JMakePDF -F6 -A $absorptionLengthFactor -S $scatteringLengthFactor -R $R -o $WORKDIR/J6p-$R.dat -d $DEBUG $BACKGROUND
188 fi
189 fi
190 done
191
192 let "DMAX_M = ${RMAX_M}*1.5"
193
194 for D in 0.1 0.5 1.0 5.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 \
195 120.0 150.0 170.0 190.0 210.0 230.0 250.0 270.0 290.0 310.0; do
196
197 if (( $D <= $DMAX_M )); then
198 if [[ ! -f $WORKDIR/J12p.dat ]]; then
199 eval $EXECUTOR JMakePDG -F12 -A $absorptionLengthFactor -S $scatteringLengthFactor -D $D -o $WORKDIR/J12p-$D.dat -d $DEBUG $BACKGROUND
200 fi
201 fi
202 done
203
204 if [[ ! -f $WORKDIR/J13p.dat ]]; then
205 eval $EXECUTOR JMakePDG -F13 -A $absorptionLengthFactor -S $scatteringLengthFactor -o $WORKDIR/J13p.dat -d $DEBUG $BACKGROUND
206 fi
207
208 let "DMAX_M = ${RMAX_M}*1.5"
209
210 for D in 0.1 0.5 1.0 5.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 \
211 120.0 150.0 170.0 190.0 210.0 230.0 250.0 270.0 290.0 310.0 \
212 340.0 370.0 400.0 430.0 460.0 490.0 520.0 550.0 600.0 650.0 700.0 750.0 800.0; do
213
214 if (( $D <= $DMAX_M )); then
215 if [[ ! -f $WORKDIR/J14p.dat ]]; then
216 eval $EXECUTOR JMakePDG -F14 -A $absorptionLengthFactor -S $scatteringLengthFactor -D $D -o $WORKDIR/J14p-$D.dat -d $DEBUG $BACKGROUND
217 fi
218 fi
219 done
220
221 if [[ ! -f $WORKDIR/J23p.dat ]]; then
222 eval $EXECUTOR JMakePD0 -F23 -A $absorptionLengthFactor -S $scatteringLengthFactor -o $WORKDIR/J23p.dat -d $DEBUG $BACKGROUND
223 fi
224 if [[ ! -f $WORKDIR/J24p.dat ]]; then
225 eval $EXECUTOR JMakePD0 -F24 -A $absorptionLengthFactor -S $scatteringLengthFactor -o $WORKDIR/J24p.dat -d $DEBUG $BACKGROUND
226 fi
227
228 if [[ "$BACKGROUND" != "" ]]; then
229 wait
230 fi
231 fi
232fi
233
234
235if (( $MERGE_PDF )); then
236
237 check_process JMergePDF pgrep
238
239 if [[ ! -f $WORKDIR/J3p.dat ]]; then
240
241 FILE_LIST=(`echo $WORKDIR/J3p-*.dat`)
242
243 eval $EXECUTOR JMergePDF -f${^FILE_LIST} -o $WORKDIR/J3p.dat -d $DEBUG $BACKGROUND
244 fi
245
246 if [[ ! -f $WORKDIR/J4p.dat ]]; then
247
248 FILE_LIST=(`echo $WORKDIR/J4p-*.dat`)
249
250 eval $EXECUTOR JMergePDF -f${^FILE_LIST} -o $WORKDIR/J4p.dat -d $DEBUG $BACKGROUND
251 fi
252
253 if [[ ! -f $WORKDIR/J6p.dat ]]; then
254
255 FILE_LIST=(`echo $WORKDIR/J6p-*.dat`)
256
257 eval $EXECUTOR JMergePDF -f${^FILE_LIST} -o $WORKDIR/J6p.dat -d $DEBUG $BACKGROUND
258 fi
259
260 if [[ ! -f $WORKDIR/J12p.dat ]]; then
261
262 FILE_LIST=(`echo $WORKDIR/J12p-*.dat`)
263
264 eval $EXECUTOR JMergePDG -f${^FILE_LIST} -o $WORKDIR/J12p.dat -d $DEBUG $BACKGROUND
265 fi
266
267 if [[ ! -f $WORKDIR/J14p.dat ]]; then
268
269 FILE_LIST=(`echo $WORKDIR/J14p-*.dat`)
270
271 eval $EXECUTOR JMergePDG -f${^FILE_LIST} -o $WORKDIR/J14p.dat -d $DEBUG $BACKGROUND
272 fi
273
274 if [[ "$BACKGROUND" != "" ]]; then
275 wait
276 fi
277fi
278
279if (( $MAKE_ZDF )); then
280
281 if [[ ! -f $WORKDIR/J113p.dat ]]; then
282
283 eval $EXECUTOR JMakePDE -F $WORKDIR/J%p.dat -o $WORKDIR/J113p.dat -T $TTS_NS -d $DEBUG $BACKGROUND
284 fi
285
286 if [[ "$BACKGROUND" != "" ]]; then
287 wait
288 fi
289fi
290
291if (( $MAKE_CDF )); then
292
293 check_process JMakeCDF JMakeCDG pgrep
294
295 if [[ ! -f $WORKDIR/I1p.dat ]]; then
296 eval $EXECUTOR JMakeCDF -f $WORKDIR/J1p.dat -e 1e-5 -o $WORKDIR/I1p.dat -d $DEBUG $BACKGROUND
297 fi
298 if [[ ! -f $WORKDIR/I2p.dat ]]; then
299 eval $EXECUTOR JMakeCDF -f $WORKDIR/J2p.dat -e 1e-4 -o $WORKDIR/I2p.dat -d $DEBUG $BACKGROUND
300 fi
301 if [[ ! -f $WORKDIR/I5p.dat ]]; then
302 eval $EXECUTOR JMakeCDF -f $WORKDIR/J5p.dat -e 1e-5 -o $WORKDIR/I5p.dat -d $DEBUG $BACKGROUND
303 fi
304 if [[ ! -f $WORKDIR/I6p.dat ]]; then
305 eval $EXECUTOR JMakeCDF -f $WORKDIR/J6p.dat -e 1e-5 -o $WORKDIR/I6p.dat -d $DEBUG $BACKGROUND
306 fi
307 if [[ ! -f $WORKDIR/I12p.dat ]]; then
308 eval $EXECUTOR JMakeCDG -f $WORKDIR/J12p.dat -e 1e-5 -o $WORKDIR/I12p.dat -d $DEBUG $BACKGROUND
309 fi
310 if [[ ! -f $WORKDIR/I13p.dat ]]; then
311 eval $EXECUTOR JMakeCDG -f $WORKDIR/J13p.dat -e 1e-5 -o $WORKDIR/I13p.dat -d $DEBUG $BACKGROUND
312 fi
313 if [[ ! -f $WORKDIR/I14p.dat ]]; then
314 eval $EXECUTOR JMakeCDG -f $WORKDIR/J14p.dat -e 1e-5 -o $WORKDIR/I14p.dat -d $DEBUG $BACKGROUND
315 fi
316
317 if [[ "$BACKGROUND" != "" ]]; then
318 wait
319 fi
320fi
321
322if (( $CLEAN )); then
323 { rm -f $WORKDIR/J*p-*.dat } >& /dev/null
324fi
325
326if (( $GZIPF )); then
327 gzip $WORKDIR/[JI]*p.dat
328fi
329
330status "End $script"