]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/FORWARD/analysis2/baseAnalysis.sh
matching constituents within matched jets (from Redmer)
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / baseAnalysis.sh
CommitLineData
c7a8b4d9 1#
2# This file contain common functions used by liteAnalysis.sh,
3# gridAnalysis.sh, etc.
4#
5
6# === Variables ======================================================
7fwd_dir=$ALICE_ROOT/PWGLF/FORWARD/analysis2
8dotconf=.config
9here=${PWD}
10name=
11now=
12sys=0
13snn=0
14field=0
15corrs=
16noact=0
17uuopts=
18# Latest: 0.91
19inel_eff=1
20# Latest: 0.94
21nsd_eff=1
22inelgt0_eff=1
23
24# === Misc. ==========================================================
25dummy()
26{
27 local f=$1
28 echo "$f: Dummy function. Please implement in $0" > /dev/stderr
29 exit 1
30}
31
32# --- Manual ---------------------------------------------------------
33manual()
34{
35 prog=`basename $0`
36 grep ^# $0 | \
37 sed -n -e '/BEGIN_MANUAL/,/END_MANUAL/ p' | \
38 sed -e '/\(BEGIN\|END\)_MANUAL/ d' -e 's/^# //' \
39 -e "s,\$0,$prog,"
40}
41# --- Check AliEn token ----------------------------------------------
42check_token()
43{
44 uid=`id -u`
45 genv_file=/tmp/gclient_env_${uid}
46
47 if test ! -f ${genv_file} ; then
48 echo "No such file: ${genv_file}, please do alien-token-init" \
49 >/dev/stderr
50 exit 1
51 fi
52 . ${genv_file}
53 alien-token-info | grep -q "Token is still valid"
54 if test $? -ne 0 ; then
55 echo "Token not valid, please re-new" > /dev/stderr
56 exit 1
57 fi
58}
59
60# === Utilities to execute scripts ===================================
61# --- Run script -----------------------------------------------------
62script()
63{
64 local scr=$1 ; shift
65 local args=$1 ; shift
66 echo "Will run aliroot -l -b -q $scr($args)"
67 if test $noact -gt 0 ; then return ; fi
68 aliroot -l -b <<-EOF
69 .x $scr($args)
70 .q
71 EOF
72}
73# --- Extract corrections --------------------------------------------
74terminate()
75{
76 echo "Nothing to do for terminate"
77}
78# --- Extract corrections --------------------------------------------
79_extract()
80{
81 local scr=${1:-Extract.C}
82 if test ! -f ${scr} ; then
83 scr="../${scr}"
84 if test ! -f ${scr} ; then
85 echo "Extract script not found in `pwd` or parent" > /dev/stderr
86 exit 1
87 fi
88 fi
89 if test -f .extract ; then
90 echo "Aldready extracted in `basename $PWD`"
91 return 0
92 fi
93 echo "= Extracting"
94 script $scr > /dev/null 2>&1
95 touch .extract
96}
97# --- Upload a file --------------------------------------------------
98upload()
99{
100 if test -f .upload ; then
101 echo "Already uploaded in `basename $PWD`"
102 return 0
103 fi
104 echo "= Uploading"
105 script Upload.C \"file://${here}/${name}_corrs_${now}/\" >/dev/null 2>&1
106 touch .upload
107}
108# --- Extract and upload ---------------------------------------------
109extract_upload()
110{
111 dummy extract_upload
112}
113# --- Draw -----------------------------------------------------------
114_draw()
115{
116 script $@
117}
118# --- Draw dN/deta results -------------------------------------------
119_dndeta_draw()
120{
121 local d=$1 ; shift
122 local scr=${1:-Draw.C}
123 echo "=== $d ================================================"
124 (cd $d && \
125 draw ${fwd_dir}/DrawdNdetaSummary.C && \
126 draw ${scr})
127}
128
129# === Task functions =================================================
130# --- Common options help --------------------------------------------
131usage()
132{
133 cat <<EOF
134Usage: $0 --what=OPERATION [--step=STEP] [OPTIONS]
135
136General options:
137 -s,--step=STEP Run stage ($step)
138 -w,--what=TRAINS What to do
139 -M,--man Show the manual
140 -N,--noact Show what will be done
141
142Options for 'setup' operation:
143 -n,--name=STRING Base name of jobs ($name)
144 -S,--sys=SYSTEM Collision system ($sys)
145 -E,--snn=ENERGY Center of mass energy per nuclean pair ($snn)
146 -F,--field=FIELD L3 magnetic field ($field)
147 -c,--corrections=DIR Directory where corrections are stored ($corrs)
148 -u,--url-opts=OPTIONS Additional user options ($uuopts)
149 -i,--inel-eff=EFF Set INEL efficiency (only pp - $inel_eff)
150 -0,--inelgt0-eff=EFF Set INEL>0 efficiency (only pp - $inelgt0_eff)
151 -v,--nsd-eff=EFF Set NSD (to V0-AND) efficiency (only pp $nsd_eff)
152EOF
153 setup_usage
154 cat <<EOF
155
156TRAINS is one of
157
158 clean Clean directory
159 setup Do intial setup
160 corrs Generate corrections
161 aods Generate AODs
162 dndeta Generate dNdeta
163 multdists Generate P(Nch)
164 flow Generate v_n{m} - not implemented yet
165
166and must be executed in that order. STEP is one of
167
168 full Run the analysis
169 terminate Terminate the job (may need iterations)
170 upload Upload corrections (only for TRAINS=corrs)
171 draw Draw (partial) results (not for TRAINS=corrs)
172EOF
173
174}
175setup_usage()
176{
177 dummy setup_usage
178}
179
180# === Setup functions ================================================
181# --- Common setup code ----------------------------------------------
182_setup()
183{
184 local lhandled=yes
185 declare -a larg=$@
186 while test $# -gt 0 ; do
187 arg=$1
188 opt=
189 case $1 in
190 --*=*)
191 arg=`echo $1 | sed 's/=.*//'` ;
192 opt=`echo $1 | sed 's/--[^=][^=]*=//'`
193 ;;
194 --*)
195 ;;
196 -*) opt=$2 ; shift ;;
197 esac
198 shift
199
200 lhandled=yes
201 # echo "Base: Processing '$arg' ('$opt')"
202 case $arg in
203 -n|--name) name=$opt ;;
204 -c|--corrections) corrs=$opt ;;
205 -i|--inel-eff) inel_eff=$opt ;;
206 -0|--inelgt0-eff) inelgt0_eff=$opt ;;
207 -v|--nsd-eff) nsd_eff=$opt ;;
208 -u|--url-opts) uuopts="$opt" ;;
209 -S|--sys) sys=`echo $opt | tr '[A-Z]' '[a-z]'` ;;
210 -E|--snn) snn=$opt ;;
211 -F|--field) field=$opt ;;
212 *) lhandled=no ;;
213 esac
214 if test x$lhandled = "xno" ; then
215 handle_setup_option "$arg" "$opt"
216 fi
217 done
218
219 # Set the date/time string
220 now=`date '+%Y%m%d_%H%M'`
221
222 # define our outputs
223 echo "=== Define outputs"
224 outputs
225
226 # Dump configuration to file
227 echo "=== Dump configuration"
228 dump_conf $larg
229
230 # Set-up for corrections
231 corrdir=${name}_corrs_${now}
232 if test "x$corrs" != "x" && test -d ${corrs} ; then
233 echo "Linking ${corrs} to ${corrdir}"
234 ln -sf $corrs ${corrdir}
235 ln -sf $corrs last_${name}_corrs
236 corrdir=$corrs
237 elif test $noact -lt 1 ; then
238 mkdir -p ${name}_acc_${now}
239 mkdir -p ${corrdir}
240 rm -f last_${name}_acc last_${name}_corrs
241 ln -sf ${name}_acc_${now} last_${name}_acc
242 ln -sf ${name}_corrs_${now} last_${name}_corrs
243 cat <<-EOF > ${corrdir}/Browse.C
244 TObject* Browse()
245 {
246 const char* fwd = "$ALICE_ROOT/PWGLF/FORWARD/analysis2";
247 if (!gROOT->GetClass("AliOADBForward"))
248 gROOT->Macro(Form("%s/scripts/LoadLibs.C", fwd));
249 gROOT->LoadMacro(Form("%s/corrs/ForwardOADBGui.C++g", fwd));
250
251 AliOADBForward* db = new AliOADBForward;
252 db->Open("fmd_corrections.root", "*");
253
254 ForwardOADBGui(db);
255
256 return db;
257 }
258 EOF
259 echo "=== Make acceptance corrections"
260 (cd ${name}_acc_${now} && \
261 accGen `$run_for_acc` && \
262 upload )
263 fi
264 for i in fmd_corrections.root spd_corrections.root deadstrips.C ; do
265 if test ! -f ${corrdir}/$i ; then continue ; fi
266 echo "Linking ${corrdir}/$i here"
267 ln -fs ${corrdir}/$i .
268 done
269
270}
271# --- Default implementation -----------------------------------------
272setup()
273{
274 echo "Default implementation"
275 _setup $@
276}
277# --- dummy handler of setup options ---------------------------------
278handle_setup_option()
279{
280 dummy handle_setup_option
281}
282# --- Dump configuration to file -------------------------------------
283dump_conf()
284{
285 cat > ${dotconf} <<-EOF
286 # Generated by command
287 #
288 EOF
289 echo -n "# $0 " >> $dotconf
290 while test $# -gt 0 ; do
291 echo -en " \\" >> $dotconf
292 case $1 in
293 --*) echo -en "\n#\t$1" >> $dotconf;;
294 -*) echo -en "\n#\t$1 $2" >> $dotconf; shift ;;
295 *) echo -en "\n#\t$1" >> $dotconf;;
296 esac
297 shift
298 done
299 cat >> ${dotconf} <<-EOF
300
301 # Settings:
302 name="$name"
303 now=${now}
304 # Collision system and similar
305 sys=$sys
306 snn=$snn
307 field=$field
308 # Additional URI options
309 uuopts="${uuopts}"
310 # Trigger efficiencies - edit here to set them
311 inel_eff=$inel_eff
312 inelgt0_eff=$inelgt0_eff
313 nsd_eff=$nsd_eff
314 EOF
315 dump_setup ${dotconf}
316 echo "# EOF" >> ${dotconf}
317}
318# --- Get the run number to use for acceptance -----------------------
319run_for_acc()
320{
321 dummy run_for_acc
322}
323# --- Dump settings to output file -----------------------------------
324dump_setup()
325{
326 dummy dump_setup
327}
328
329# --- Run acceptance generation --------------------------------------
330accGen()
331{
332 check_token
333 local run=$1
334 script ${fwd_dir}/corrs/ExtractAcceptance.C "${run}"
335
336}
337
338# === Check function =================================================
339check()
340{
341 local w=$1
342
343 if test "X$name" = X ; then
344 echo "No name specified" > /dev/stderr
345 exit 1
346 fi
347 if test "X$w" != "Xsetup" && test "x$now" = "x" ; then
348 echo "No date/time specified" > /dev/stderr
349 exit 1
350 fi
351
352 check_setup $w
353
354 # sys==0 is OK - autoselect
355 case x$sys in
356 xpp|xp-p) sys=1 ;;
357 xpbpb|xpb-pb|xaa|xa-a) sys=2 ;;
358 xppb|xp-pb|xpa|xp-a) sys=3 ;;
359 x0|x1|x2|x3) ;;
360 x) sys=0 ;;
361 *) echo "$0: Unknown system: $sys" ; exit 1 ;;
362 esac
363
364}
365check_setup()
366{
367 dummy check_setup
368}
369
370# --- Show the setup -------------------------------------------------
371print()
372{
373 cat <<-EOF
374 Name: ${name}
375 Collision system: ${sys}
376 sqrt(s_NN): ${snn}GeV
377 L3 Field: ${field}kG
378 Date & time: ${now}
379 Additional URL options: ${uuopts}
380 Trigger efficiencies:
381 INEL: ${inel_eff}
382 INEL>0: ${inelgt0_eff}
383 NSD: ${nsd_eff}
384 EOF
385 print_setup
386}
387print_setup()
388{
389 dummy print_setup
390}
391
392# === Task functions =================================================
393# Modifies 'opts'
394train_opts()
395{
396 local mc=$1 ; shift
397 local type=$1 ; shift
398 local trig=$1 ; shift
399
400 nme=${name}_${type}
401
402 case $type in
403 *corr) cl=MakeMCCorrTrain ; mc=1 ;;
404 *eloss) cl=MakeFMDELossTrain ;;
405 *aod) cl=MakeAODTrain ; opts="${opts} --corr=." ;;
406 *dndeta) cl=MakedNdetaTrain
407 tree=aodTree
408 opts="${opts} --cut-edges"
409 case x$trig in
410 xinel)
411 opts="$opts --scheme=trigger,event,background"
412 opts="$opts --trig=INEL --trigEff=$inel_eff"
413 ;;
414 xnsd)
415 opts="$opts --scheme=trigger,event"
416 opts="$opts --trig=V0AND --trigEff=$nsd_eff"
417 ;;
418 xinelgt0)
419 opts="$opts --scheme=trigger,event"
420 opts="$opts --trig=INELGT0 --trigEff=$inelgt0_eff"
421 ;;
422 x*) trig= ;;
423 esac
424 if test "x$trig" != "x" ; then
425 nme="${nme}_${trig}"
426 fi
427 if test $mc -gt 0 ; then
428 opts="$opts --mc"
429 fi
430 ;;
431 *multdists)
432 cl=MakeMultDistsTrain
433 tree=aodTree
434 pat="*/AliAOD.root"
435 ;;
436 *) echo "$0: Unknown type of train: $type" > /dev/stderr ; exit 1 ;;
437 esac
438 # add centrality flag if we do not know what collision system we're
439 # looking at, or it's PbPb or pPb.
440 case $sys in
441 0|2|3) opts="$opts --cent" ;;
442 1) ;;
443 esac
444 opts="${opts} --include=$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains"
445 opts="${opts} --date=${now} --class=$cl --name=$nme --verbose=0"
446}
447
448# --- Run the train --------------------------------------------------
449_allAboard()
450{
451 local type=$1 ; shift
452 local trig=$1 ; shift
453
454 local mc=0
455 case $type in
456 mc*) mc=1 ;;
457 esac
458
459 train_opts $mc $type $trig
460 url_opts $mc $type $trig
461
462
463 echo "=== Running train: runTrain ${opts} --url=${url} $@"
464 if test $noact -gt 0 ; then return ; fi
465
466 runTrain ${opts} --overwrite --url=${url} $@
467}
468url_opts()
469{
470 dummy url_opts
471}
472allAboard()
473{
474 _allAboard $@
475}
476
477# --- Collect PDFs ---------------------------------------------------
478collect()
479{
480 local out=${name}_pdfs_${now}
481 rm -rf $out
482 mkdir -p ${out}
483 dirs="corr eloss aod dndeta dndeta_inel dndeta_nsd dndeta_inelgt0 multdists"
484 for d in ${dirs} ; do
485 for m in "" "mc" ; do
486 dir=${name}_${m}${d}_${now}
487 M=
488 case x$m in
489 x) M=real ;;
490 xmc) M=simu ;;
491 esac
492 if test ! -d $dir ; then
493 # echo "Directory ${dir} doesn't exist"
494 continue
495 fi
496 # echo "Will look in $dir"
497 local files=
498 case $d in
499 corr) files="forward_mccorr.pdf" ;;
500 eloss) files="corrs*.pdf" ;;
501 aod) files="forward.pdf" ;;
502 dndeta*) files="forward_dndeta.pdf dNdeta*.pdf" ;;
503 multdists) files="forward_multdists.pdf" ;;
504 *) echo "Unknown directory type: $d" > /dev/stder
505 continue
506 ;;
507 esac
508 collect_files "$dir" "$d" "$M" "$out" "$run" "$files"
509
510 done
511 done
512 (cd ${out} && pdfjoin -q -o tmp.pdf \
513 --pdftitle "${name} summary ($now)" \
514 --twoside summary_*.pdf dndeta_*.pdf && \
515 pdfnup -q --nup 2x1 -o ${name}_summary_${now}.pdf tmp.pdf && \
516 rm -f tmp.pdf)
517 (cd ${out} && pdfjoin -q -o tmp.pdf \
518 --pdftitle "${name} dN/deta ($now)" \
519 --twoside dndeta_*.pdf && \
520 pdfnup -q --nup 2x1 -o ${name}_dndeta_${now}.pdf tmp.pdf && \
521 rm -f tmp.pdf)
522 echo "Made ${name}_summary_${now}.pdf and ${name}_dndeta_${now}.pdf"
523}
524
525_collect_files()
526{
527 local dir=$1 ; shift
528 local d=$1 ; shift
529 local M=$1 ; shift
530 local out=$1 ; shift
531 local r=$1 ; shift
532 local files="$1"
533 for f in $files ; do
534 ff=$dir/$f
535 tgt=`collect_name "$ff" "$d" "$M"`
536 if test "x$tgt" = "x" ; then
537 continue
538 fi
539 tgt=`printf "%s_%09d.pdf" $tgt $run`
540 # printf "%100s -> %s\n" $ff $tgt
541 if test ! -f $ff ; then
542 echo "$ff not found - ignored"
543 continue
544 fi
545 cp $ff $out/$tgt
546 done # for f in files
547}
548
549collect_name()
550{
551 local tgt=
552 local ff="$1" ; shift
553 local d="$1" ; shift
554 local M=$1 ; shift
555 case $ff in
556 */forward_mccorr.pdf) tgt=summary_mccorr ;;
557 */forward.pdf) tgt=summary_${d}_${M} ;;
558 */forward_dndeta.pdf) tgt=summary_${d}_${M} ;;
559 */forward_multdists.pdf) tgt=summary_${d}_${M} ;;
560 */eloss*.pdf) tgt=summary_${d}_${M} ;;
561 */dNdeta*.pdf) tgt=${d}_${M} ;;
562 *) echo "Don't know how to deal with $ff" >/dev/stderr
563 esac
564 echo $tgt
565}
566
567collect_files()
568{
569 _collect_files $@
570}
571
572# --- Clean up -------------------------------------------------------
573_cleanup()
574{
575 for i in acc aod corrs dndeta dndeta_inel dndeta_inelgt0 dndeta_nsd \
576 eloss multdist ; do
577 for j in "" mc ; do
578 if test ! -d ${name}_${j}${i}_${now} ; then
579 continue
580 fi
581 rm -rf ${name}_${j}${i}_${now}
582 rm -f last_${name}_${j}${i}
583 done
584 done
585 rm -f build.log
586 for i in fmd_corrections.root spd_corrections.root deadstrips.C ; do
587 if test ! -L $i ; then
588 continue
589 fi
590 rm -f fmd_corrections.root
591 done
592}
593cleanup()
594{
595 _cleanup
596}
597# === Wrappers =======================================================
598# --- Run all correction jobs ----------------------------------------
599# This assumes the function allAboard
600corrs()
601{
602 allAboard mccorr "" $@
603 allAboard mceloss "" $@
604 allAboard eloss "" $@
605}
606corrs_terminate()
607{
608 (cd ${name}_mccorr_${now} && terminate)
609 (cd ${name}_mceloss_${now} && terminate)
610 (cd ${name}_eloss_${now} && terminate)
611}
612# This assumes the function extract_upload
613corrs_upload()
614{
615 if test "X$mc_dir" != "X" ; then
616 (cd ${name}_mccorr_${now} && extract_upload)
617 (cd ${name}_mceloss_${now} && extract_upload)
618 fi
619 (cd ${name}_eloss_${now} && extract_upload)
620 rm -f fmd_corrections.root spd_corrections.root
621 ln -s ${name}_corrs_${now}/fmd_corrections.root .
622 ln -s ${name}_corrs_${now}/spd_corrections.root .
623}
624corrs_draw()
625{
626 if test "X$mc_dir" != "X" ; then
627 (cd ${name}_mccorr_${now} && draw ${fwd_dir}/DrawMCCorrSummary.C)
628 (cd ${name}_mceloss_${now} && draw ${fwd_dir}/corrs/DrawCorrELoss.C 1)
629 fi
630 (cd ${name}_eloss_${now} && draw ${fwd_dir}/corrs/DrawCorrELoss.C 0)
631}
632# --- Run all AOD jobs -----------------------------------------------
633aods()
634{
635 allAboard mcaod "" $@
636 allAboard aod "" $@
637}
638aods_terminate()
639{
640 (cd ${name}_mcaod_${now} && terminate)
641 (cd ${name}_aod_${now} && terminate)
642}
643aods_upload()
644{
645 echo "Upload does not make sense for AOD jobs"
646}
647aods_draw()
648{
649 (cd ${name}_mcaod_${now} && draw Summarize.C)
650 (cd ${name}_aod_${now} && draw Summarize.C)
651}
652# --- Run all dN/deta jobs -------------------------------------------
653dndetas()
654{
655 if test $sys -eq 1 ; then
656 allAboard mcdndeta inel $@
657 allAboard mcdndeta nsd $@
658 allAboard mcdndeta inelgt0 $@
659 allAboard dndeta inel $@
660 allAboard dndeta nsd $@
661 allAboard dndeta inelgt0 $@
662 else
663 allAboard mcdndeta "" $@
664 allAboard dndeta "" $@
665 fi
666}
667dndetas_terminate()
668{
669 if test $sys -eq 1 ; then
670 (cd ${name}_mcdndeta_inel_${now} && terminate)
671 (cd ${name}_mcdndeta_nsd_${now} && terminate)
672 (cd ${name}_mcdndeta_inelgt0_${now} && terminate)
673 (cd ${name}_dndeta_inel_${now} && terminate)
674 (cd ${name}_dndeta_nsd_${now} && terminate)
675 (cd ${name}_dndeta_inelgt0_${now} && terminate)
676 else
677 (cd ${name}_mcdndeta_${now} && terminate)
678 (cd ${name}_dndeta_${now} && terminate)
679 fi
680}
681dndetas_upload()
682{
683 echo "Upload does not make sense for dN/deta jobs"
684}
685dndetas_draw()
686{
687 if test $sys -eq 1 ; then
688 dndeta_draw ${name}_mcdndeta_inel_${now}
689 dndeta_draw ${name}_mcdndeta_nsd_${now}
690 dndeta_draw ${name}_mcdndeta_inelgt0_${now}
691 dndeta_draw ${name}_dndeta_inel_${now}
692 dndeta_draw ${name}_dndeta_nsd_${now}
693 dndeta_draw ${name}_dndeta_inelgt0_${now}
694 else
695 dndeta_draw ${name}_dndeta_${now}
696 fi
697}
698# --- Run all MultDists -------------------------------------------
699multdists()
700{
701 allAboard mcmultdists "" $@
702 allAboard multdists "" $@
703}
704multdists_terminate()
705{
706 (cd ${name}_mcmultdists_${now} && terminate)
707 (cd ${name}_multdists_${now} && terminate)
708}
709multdists_upload()
710{
711 echo "Upload does not make sense for P(Nch) jobs"
712}
713multdists_draw()
714{
715 (cd ${name}_mcmultdists_${now} && draw Summarize.C)
716 (cd ${name}_multdists_${now} && draw Summarize.C)
717}
718
719# === Driver code ====================================================
720# assumes functions:
721#
722# handle_option ARG [OPT]
723# check [WHAT]
724# print_setup
725# setup
726# cleanup
727#
728runIt()
729{
730 # --- Source settings if found -----------------------------------
731 if test -f $dotconf ; then
732 source $dotconf
733 fi
734
735
736 # --- Process command line -------------------------------------------
737 what=
738 step=
739 declare -a parg
740 local iarg=0
741 while test $# -gt 0 ; do
742 local arg=$1
743 local opt=
744 local handled_arg=1
745 local handled_opt=0
746 case $1 in
747 --) shift ; break ;;
748 --*=*)
749 arg=`echo $1 | sed 's/=.*//'` ;
750 opt=`echo $1 | sed 's/--[^=][^=]*=//'`
751 ;;
752 --*)
753 ;;
754 -h|-N|-H|-a) ;;
755 -*) opt=$2 ; handled_opt=1 ;;
756 esac
757
758 # echo "Run: Processing '$arg' ('$opt')"
759 case $arg in
760 -w|--what) what=`echo $opt | tr '[A-Z]' '[a-z]'` ;;
761 -s|--step) step=`echo $opt | tr '[A-Z]' '[a-z]'` ;;
762 -N|--noact) noact=1 ;;
763 -h|--help) usage ; exit 0 ;;
764 -H|--manual) manual ; exit 0 ;;
765 *) handled_arg=0 ;;
766 esac
767 if test $handled_arg -lt 1 ; then
768 parg[$iarg]="$1"
769 let iarg=$iarg+1
770 # echo "Pushed $1 -> ${parg[@]}"
771 if test $handled_opt -gt 0 ; then
772 parg[$iarg]="$2"
773 let iarg=$iarg+1
774 # echo "Pushed $2, gobble $2 -> ${parg[@]}"
775 shift
776 fi
777 else
778 if test $handled_opt -gt 0 ; then
779 shift
780 # echo "Gobble $1"
781 fi
782 fi
783 shift
784 done
785 # For backward compatibility
786 while test $# -gt 0 ; do
787 parg[$iarg]=$1
788 shift
789 let iarg=$iarg+1
790 done
791 # --- Select what to do ------------------------------------------
792 func=
793 case $what in
794 setup) setup ${parg[@]} ; exit 0 ;;
795 clean) cleanup ; exit 0 ;;
796 corr*) func=corrs;;
797 aod*) func=aods ;;
798 dndeta*) func=dndetas ;;
799 multdist*)func=multdists ;;
800 collect*) func=collect ;;
801 *) echo "$0: Unknown operation: $what" > /dev/stderr ; exit 1 ;;
802 esac
803
804 # --- Check settings ---------------------------------------------
805 check $what
806
807 print
808
809 case $what in
810 setup|clean|collect) step=full ;;
811 esac
812
813 case x$step in
814 x|xfull) ;;
815 xterm*) func=${func}_terminate ;;
816 xup*) func=${func}_upload ;;
817 xdr*) func=${func}_draw ;;
818 *) echo "$0: Unknown step $step" > /dev/stderr ; exit 1 ;;
819 esac
820
821 echo "Will execute $func (${parg[@]})"
822 $func ${parg[@]}
823}
824
825#
826# EOF
827#
828