Jpp 20.0.0-195-g190c9e876
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
22source $JPP_DIR/software/scripts/qlib.sh
23
24set_variable DEBUG 2
25set_variable WORKDIR $JPP_DATA
26set_variable MAKE_PDF 0
27set_variable MERGE_PDF 0
28set_variable MAKE_ZDF 0
29set_variable MAKE_CDF 0
30set_variable CLEAN 0
31set_variable GZIPF 0
32set_variable BACKGROUND
33set_variable WGET
34set_variable RMAX_M 999
35set_variable: TTS_NS PHYSICS_TTS_NS 2.0
36set_variable: QUEUE_SIZE PHYSICS_QUEUE_SIZE 10
37set_variable: ABSORPTION_LENGTH PHYSICS_ABSORPTION_LENGTH "default 1.0"
38set_variable: SCATTERING_LENGTH PHYSICS_SCATTERING_LENGTH "default 1.0"
39set_variable: SCATTERING_PROBABILITY PHYSICS_SCATTERING_PROBABILITY "default 1.0"
40
41alias EXECUTOR=nohup
42
43PDF_TYPES=(1 2 3 4 5 6 12 13 14 23 24)
44CDF_TYPES=(1 2 5 6 12 13 14)
45
46
47#
48# Method to print usage of script.
49#
50function __usage__()
51{
52 set_variable DEBUG 3
53
54 usage "$script\n"\
55 "-d <debug level>\n" \
56 "-W <working directory PDF and CDF tables>\n" \
57 "-P create PDF tables\n" \
58 "-M merge PDF tables\n" \
59 "-Z create PDF table for elongated shower\n" \
60 "-C convert PDF tables to CDF tables\n" \
61 "-c clean PDF tables\n" \
62 "-G gzip PDF and CDF tables\n" \
63 "-B parallel running of all jobs in background\n" \
64 "-E executor command (default: nohup, possible values: echo, puts_queue)\n" \
65 "-w download files from GIT server (e.g. \"http://sftp.km3net.de/data/latest/\")\n" \
66 "-R <maximal distance between muon and PMT>\n" \
67 "Script to generate the PDF/CDFs, merge and zip them;\n" \
68 "Standard example: JMakePDF.sh -W \${JPP_DATA} -PMCcG\n" \
69 "List of PDF files:" J${^PDF_TYPES}p.dat.gz "\n" \
70 "List of CDF files:" I${^CDF_TYPES}p.dat.gz "\n" \
71 "Note that the elongated EM-shower PDF is created at option -Z.\n" \
72 "Example to print all necessary batch programs: JMakePDF.sh -W \${JPP_DATA} -E echo -P"
73}
74
75#
76# Parse command line options.
77#
78while getopts "d:W:PMZCcGBE:w:hA:S:R:" option; do
79 case "$option" in
80 d) set_variable DEBUG $OPTARG;;
81 W) set_variable WORKDIR $OPTARG;;
82 P) set_variable MAKE_PDF 1;;
83 M) set_variable MERGE_PDF 1;;
84 Z) set_variable MAKE_ZDF 1;;
85 C) set_variable MAKE_CDF 1;;
86 c) set_variable CLEAN 1;;
87 G) set_variable GZIPF 1;;
88 B) set_variable BACKGROUND \&;;
89 E) alias EXECUTOR=$OPTARG;;
90 w) set_variable WGET $OPTARG;;
91 h) __usage__;;
92 R) set_variable RMAX_M $OPTARG;;
93 esac
94done
95
96
97# check whether script is already running
98
99BUFFER=`get_pid $script`
100BUFFER=${BUFFER/${$}/}
101
102if [[ -n "${BUFFER/ */}" ]]; then
103 notice "${script} already running <${BUFFER}>"
104 exit 0
105fi
106
107check_variable ROOTSYS JPP_DIR WORKDIR
108
109mkdir -p $WORKDIR
110
111if [[ ! -d $WORKDIR ]]; then
112 fatal "Directory $WORKDIR does not exist."
113fi
114
115status "Start $script with executor $EXECUTOR"
116
117
118# batch queue
119
120set_variable QUEUE $WORKDIR/queue_pdf
121
122if [[ "$aliases[EXECUTOR]" == "puts_queue" ]]; then
123 eval alias EXECUTOR=\'puts_queue $QUEUE\'
124fi
125
126
127#
128# Check if PDF already exist.
129#
130# \param 1 PDF type
131# \return 1 if exists; else 0
132#
133function check_pdf()
134{
135 if [[ ! -f $WORKDIR/J${1}p.dat ]] && [[ ! -f $WORKDIR/J${1}p.dat.gz ]]; then
136 return 1
137 else
138 return 0;
139 fi
140}
141
142
143#
144# Check if CDF already exist.
145#
146# \param 1 CDF type
147# \return 1 if exists; else 0
148#
149function check_cdf()
150{
151 if [[ ! -f $WORKDIR/I${1}p.dat ]] && [[ ! -f $WORKDIR/I${1}p.dat.gz ]]; then
152 return 1
153 else
154 return 0;
155 fi
156}
157
158
159if [[ -n $WGET ]]; then
160
161 pushd $WORKDIR
162
163 for FILE in J${^PDF_TYPES}p.dat.gz I${^CDF_TYPES}p.dat.gz; do
164
165 status "Checking file $WGET/$FILE"
166
167 if [[ ! -f $FILE ]]; then
168
169 wget $WGET/$FILE -q
170
171 if (( $? != 0 )); then
172
173 status "Checking file $WGET/${FILE:r}"
174
175 wget $WGET/${FILE:r} -q
176
177 if (( $? == 0 )); then
178 gzip ${FILE:r}
179 else
180 fatal "No file $WGET/$FILE or ${FILE:r}"
181 fi
182 fi
183 fi
184 done
185
186 popd
187fi
188
189
190if (( $MAKE_PDF )); then
191
192 check_process JMakePDF JMakePDG pgrep
193
194 if [[ "$aliases[EXECUTOR]" == "puts_queue"* ]]; then
195 $JPP_DIR/examples/scripts/mkqueue.sh $QUEUE $QUEUE_SIZE start
196 fi
197
198 if ( ! check_pdf 1 ); then
199
200 EXECUTOR JMakePDF \
201 -F1 \
202 -@ "absorptionLength = $ABSORPTION_LENGTH" \
203 -@ "scatteringLength = $SCATTERING_LENGTH" \
204 -@ "scatteringProbability = $SCATTERING_PROBABILITY" \
205 -o $WORKDIR/J1p.dat \
206 -d $DEBUG --! $BACKGROUND
207 fi
208
209 if ( ! check_pdf 2 ); then
210
211 EXECUTOR JMakePDF \
212 -F2 \
213 -@ "absorptionLength = $ABSORPTION_LENGTH" \
214 -@ "scatteringLength = $SCATTERING_LENGTH" \
215 -@ "scatteringProbability = $SCATTERING_PROBABILITY" \
216 -o $WORKDIR/J2p.dat \
217 -d $DEBUG --! $BACKGROUND
218 fi
219
220 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 \
221 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 \
222 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 \
223 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 \
224 170.0 190.0 210.0 230.0 250.0 270.0 290.0 310.0 360.0 410.0; do
225
226 if (( $R <= $RMAX_M )); then
227
228 if ( ! check_pdf 3 ); then
229
230 EXECUTOR JMakePDF \
231 -F3 \
232 -@ "absorptionLength = $ABSORPTION_LENGTH" \
233 -@ "scatteringLength = $SCATTERING_LENGTH" \
234 -@ "scatteringProbability = $SCATTERING_PROBABILITY" \
235 -R $R \
236 -o $WORKDIR/J3p-$R.dat \
237 -d $DEBUG --! $BACKGROUND
238 fi
239
240 if ( ! check_pdf 4 ); then
241
242 EXECUTOR JMakePDF\
243 -F4 \
244 -@ "absorptionLength = $ABSORPTION_LENGTH" \
245 -@ "scatteringLength = $SCATTERING_LENGTH" \
246 -@ "scatteringProbability = $SCATTERING_PROBABILITY" \
247 -R $R \
248 -o $WORKDIR/J4p-$R.dat \
249 -d $DEBUG --! $BACKGROUND
250 fi
251 fi
252 done
253
254 if ( ! check_pdf 5 ); then
255
256 EXECUTOR JMakePDF \
257 -F5 \
258 -@ "absorptionLength = $ABSORPTION_LENGTH" \
259 -@ "scatteringLength = $SCATTERING_LENGTH" \
260 -@ "scatteringProbability = $SCATTERING_PROBABILITY" \
261 -o $WORKDIR/J5p.dat \
262 -d $DEBUG $BACKGROUND
263 fi
264
265 if ( ! check_pdf 6 ); then
266
267 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 \
268 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 \
269 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 \
270 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 \
271 170.0 190.0 210.0 230.0 250.0; do
272
273 if (( $R <= $RMAX_M )); then
274
275 EXECUTOR JMakePDF \
276 -F6 \
277 -@ "absorptionLength = $ABSORPTION_LENGTH" \
278 -@ "scatteringLength = $SCATTERING_LENGTH" \
279 -@ "scatteringProbability = $SCATTERING_PROBABILITY" \
280 -R $R \
281 -o $WORKDIR/J6p-$R.dat \
282 -d $DEBUG --! $BACKGROUND
283 fi
284 done
285 fi
286
287 let "DMAX_M = ${RMAX_M}*1.5"
288
289 if ( ! check_pdf 12 ); then
290
291 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 \
292 120.0 150.0 170.0 190.0 210.0 230.0 250.0 270.0 290.0 310.0; do
293
294 if (( $D <= $DMAX_M )); then
295
296 EXECUTOR JMakePDG \
297 -F12 \
298 -@ "absorptionLength = $ABSORPTION_LENGTH" \
299 -@ "scatteringLength = $SCATTERING_LENGTH" \
300 -@ "scatteringProbability = $SCATTERING_PROBABILITY" \
301 -D $D \
302 -o $WORKDIR/J12p-$D.dat \
303 -d $DEBUG --! $BACKGROUND
304 fi
305 done
306 fi
307
308 if ( ! check_pdf 13 ); then
309
310 EXECUTOR JMakePDG \
311 -F13 \
312 -@ "absorptionLength = $ABSORPTION_LENGTH" \
313 -@ "scatteringLength = $SCATTERING_LENGTH" \
314 -@ "scatteringProbability = $SCATTERING_PROBABILITY" \
315 -o $WORKDIR/J13p.dat \
316 -d $DEBUG --! $BACKGROUND
317 fi
318
319 let "DMAX_M = ${RMAX_M}*1.5"
320
321 if ( ! check_pdf 14 ); then
322
323 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 \
324 120.0 150.0 170.0 190.0 210.0 230.0 250.0 270.0 290.0 310.0 \
325 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
326
327 if (( $D <= $DMAX_M )); then
328
329 EXECUTOR JMakePDG \
330 -F14 \
331 -@ "absorptionLength = $ABSORPTION_LENGTH" \
332 -@ "scatteringLength = $SCATTERING_LENGTH" \
333 -@ "scatteringProbability = $SCATTERING_PROBABILITY" \
334 -D $D \
335 -o $WORKDIR/J14p-$D.dat \
336 -d $DEBUG --! $BACKGROUND
337 fi
338 done
339 fi
340
341 if ( ! check_pdf 23 ); then
342
343 EXECUTOR JMakePD0 \
344 -F23 \
345 -@ "absorptionLength = $ABSORPTION_LENGTH" \
346 -@ "scatteringLength = $SCATTERING_LENGTH" \
347 -@ "scatteringProbability = $SCATTERING_PROBABILITY" \
348 -o $WORKDIR/J23p.dat \
349 -d $DEBUG --! $BACKGROUND
350 fi
351
352 if ( ! check_pdf 24 ); then
353
354 EXECUTOR JMakePD0 \
355 -F24 \
356 -@ "absorptionLength = $ABSORPTION_LENGTH" \
357 -@ "scatteringLength = $SCATTERING_LENGTH" \
358 -@ "scatteringProbability = $SCATTERING_PROBABILITY" \
359 -o $WORKDIR/J24p.dat \
360 -d $DEBUG --! $BACKGROUND
361 fi
362
363 if [[ "$BACKGROUND" != "" ]]; then
364 wait
365 fi
366
367 if [[ "$aliases[EXECUTOR]" == "puts_queue"* ]]; then
368 $JPP_DIR/examples/scripts/mkqueue.sh $QUEUE wait
369 fi
370
371 if [[ "$aliases[EXECUTOR]" == "echo" ]]; then
372 return
373 fi
374fi
375
376
377if (( $MERGE_PDF )); then
378
379 check_process JMergePDF pgrep
380
381 if ( ! check_pdf 3 ); then
382
383 FILE_LIST=(`ls $WORKDIR/J3p-*.dat`)
384
385 JMergePDF -f${^FILE_LIST} -o $WORKDIR/J3p.dat -d $DEBUG
386 fi
387
388 if ( ! check_pdf 4 ); then
389
390 FILE_LIST=(`ls $WORKDIR/J4p-*.dat`)
391
392 JMergePDF -f${^FILE_LIST} -o $WORKDIR/J4p.dat -d $DEBUG
393 fi
394
395 if ( ! check_pdf 6 ); then
396
397 FILE_LIST=(`ls $WORKDIR/J6p-*.dat`)
398
399 JMergePDF -f${^FILE_LIST} -o $WORKDIR/J6p.dat -d $DEBUG
400 fi
401
402 if ( ! check_pdf 12 ); then
403
404 FILE_LIST=(`ls $WORKDIR/J12p-*.dat`)
405
406 JMergePDG -f${^FILE_LIST} -o $WORKDIR/J12p.dat -d $DEBUG
407 fi
408
409 if ( ! check_pdf 14 ); then
410
411 FILE_LIST=(`ls $WORKDIR/J14p-*.dat`)
412
413 JMergePDG -f${^FILE_LIST} -o $WORKDIR/J14p.dat -d $DEBUG
414 fi
415fi
416
417
418if (( $MAKE_ZDF )); then
419
420 if ( ! check_pdf 113 ); then
421
422 if [[ "$aliases[EXECUTOR]" == "puts_queue"* ]]; then
423 $JPP_DIR/examples/scripts/mkqueue.sh $QUEUE $QUEUE_SIZE start
424 fi
425
426 EXECUTOR JMakePDE -F $WORKDIR/J%p.dat -o $WORKDIR/J113p.dat -T $TTS_NS -d $DEBUG $BACKGROUND
427
428 if [[ "$BACKGROUND" != "" ]]; then
429 wait
430 fi
431
432 if [[ "$aliases[EXECUTOR]" == "puts_queue"* ]]; then
433 $JPP_DIR/examples/scripts/mkqueue.sh $QUEUE wait
434 fi
435 fi
436fi
437
438if (( $MAKE_CDF )); then
439
440 check_process JMakeCDF JMakeCDG pgrep
441
442 if ( ! check_cdf 1 ); then
443 JMakeCDF -f $WORKDIR/J1p.dat -e 1e-5 -o $WORKDIR/I1p.dat -d $DEBUG
444 fi
445 if ( ! check_cdf 2 ); then
446 JMakeCDF -f $WORKDIR/J2p.dat -e 1e-4 -o $WORKDIR/I2p.dat -d $DEBUG
447 fi
448 if ( ! check_cdf 5 ); then
449 JMakeCDF -f $WORKDIR/J5p.dat -e 1e-5 -o $WORKDIR/I5p.dat -d $DEBUG
450 fi
451 if ( ! check_cdf 6 ); then
452 JMakeCDF -f $WORKDIR/J6p.dat -e 1e-5 -o $WORKDIR/I6p.dat -d $DEBUG
453 fi
454 if ( ! check_cdf 12 ); then
455 JMakeCDG -f $WORKDIR/J12p.dat -e 1e-5 -o $WORKDIR/I12p.dat -d $DEBUG
456 fi
457 if ( ! check_cdf 13 ); then
458 JMakeCDG -f $WORKDIR/J13p.dat -e 1e-5 -o $WORKDIR/I13p.dat -d $DEBUG
459 fi
460 if ( ! check_cdf 14 ); then
461 JMakeCDG -f $WORKDIR/J14p.dat -e 1e-5 -o $WORKDIR/I14p.dat -d $DEBUG
462 fi
463fi
464
465
466if (( $CLEAN )); then
467 { rm -f $WORKDIR/J*p-*.dat } >& /dev/null
468fi
469
470
471if (( $GZIPF )); then
472 notice "gzipping"
473 gzip $WORKDIR/[JI]*p.dat
474fi
475
476
477status "End $script"