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