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