]>
Commit | Line | Data |
---|---|---|
c7a8b4d9 | 1 | # |
2 | # This file contain common functions used by liteAnalysis.sh, | |
3 | # gridAnalysis.sh, etc. | |
4 | # | |
5 | ||
6 | # === Variables ====================================================== | |
7 | fwd_dir=$ALICE_ROOT/PWGLF/FORWARD/analysis2 | |
8 | dotconf=.config | |
9 | here=${PWD} | |
10 | name= | |
11 | now= | |
12 | sys=0 | |
13 | snn=0 | |
14 | field=0 | |
15 | corrs= | |
16 | noact=0 | |
17 | uuopts= | |
18 | # Latest: 0.91 | |
19 | inel_eff=1 | |
20 | # Latest: 0.94 | |
21 | nsd_eff=1 | |
22 | inelgt0_eff=1 | |
23 | ||
24 | # === Misc. ========================================================== | |
25 | dummy() | |
26 | { | |
27 | local f=$1 | |
28 | echo "$f: Dummy function. Please implement in $0" > /dev/stderr | |
29 | exit 1 | |
30 | } | |
31 | ||
32 | # --- Manual --------------------------------------------------------- | |
33 | manual() | |
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 ---------------------------------------------- | |
42 | check_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 ----------------------------------------------------- | |
62 | script() | |
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 -------------------------------------------- | |
74 | terminate() | |
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 -------------------------------------------------- | |
98 | upload() | |
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 --------------------------------------------- | |
109 | extract_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 -------------------------------------------- | |
131 | usage() | |
132 | { | |
133 | cat <<EOF | |
134 | Usage: $0 --what=OPERATION [--step=STEP] [OPTIONS] | |
135 | ||
136 | General 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 | ||
142 | Options 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) | |
152 | EOF | |
153 | setup_usage | |
154 | cat <<EOF | |
155 | ||
156 | TRAINS 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 | ||
166 | and 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) | |
172 | EOF | |
173 | ||
174 | } | |
175 | setup_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 ----------------------------------------- | |
272 | setup() | |
273 | { | |
274 | echo "Default implementation" | |
275 | _setup $@ | |
276 | } | |
277 | # --- dummy handler of setup options --------------------------------- | |
278 | handle_setup_option() | |
279 | { | |
280 | dummy handle_setup_option | |
281 | } | |
282 | # --- Dump configuration to file ------------------------------------- | |
283 | dump_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 ----------------------- | |
319 | run_for_acc() | |
320 | { | |
321 | dummy run_for_acc | |
322 | } | |
323 | # --- Dump settings to output file ----------------------------------- | |
324 | dump_setup() | |
325 | { | |
326 | dummy dump_setup | |
327 | } | |
328 | ||
329 | # --- Run acceptance generation -------------------------------------- | |
330 | accGen() | |
331 | { | |
332 | check_token | |
333 | local run=$1 | |
334 | script ${fwd_dir}/corrs/ExtractAcceptance.C "${run}" | |
335 | ||
336 | } | |
337 | ||
338 | # === Check function ================================================= | |
339 | check() | |
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 | } | |
365 | check_setup() | |
366 | { | |
367 | dummy check_setup | |
368 | } | |
369 | ||
370 | # --- Show the setup ------------------------------------------------- | |
371 | print() | |
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 | } | |
387 | print_setup() | |
388 | { | |
389 | dummy print_setup | |
390 | } | |
391 | ||
392 | # === Task functions ================================================= | |
393 | # Modifies 'opts' | |
394 | train_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 | } | |
468 | url_opts() | |
469 | { | |
470 | dummy url_opts | |
471 | } | |
472 | allAboard() | |
473 | { | |
474 | _allAboard $@ | |
475 | } | |
476 | ||
477 | # --- Collect PDFs --------------------------------------------------- | |
478 | collect() | |
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 | ||
549 | collect_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 | ||
567 | collect_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 | } | |
593 | cleanup() | |
594 | { | |
595 | _cleanup | |
596 | } | |
597 | # === Wrappers ======================================================= | |
598 | # --- Run all correction jobs ---------------------------------------- | |
599 | # This assumes the function allAboard | |
600 | corrs() | |
601 | { | |
602 | allAboard mccorr "" $@ | |
603 | allAboard mceloss "" $@ | |
604 | allAboard eloss "" $@ | |
605 | } | |
606 | corrs_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 | |
613 | corrs_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 | } | |
624 | corrs_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 ----------------------------------------------- | |
633 | aods() | |
634 | { | |
635 | allAboard mcaod "" $@ | |
636 | allAboard aod "" $@ | |
637 | } | |
638 | aods_terminate() | |
639 | { | |
640 | (cd ${name}_mcaod_${now} && terminate) | |
641 | (cd ${name}_aod_${now} && terminate) | |
642 | } | |
643 | aods_upload() | |
644 | { | |
645 | echo "Upload does not make sense for AOD jobs" | |
646 | } | |
647 | aods_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 ------------------------------------------- | |
653 | dndetas() | |
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 | } | |
667 | dndetas_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 | } | |
681 | dndetas_upload() | |
682 | { | |
683 | echo "Upload does not make sense for dN/deta jobs" | |
684 | } | |
685 | dndetas_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 ------------------------------------------- | |
699 | multdists() | |
700 | { | |
701 | allAboard mcmultdists "" $@ | |
702 | allAboard multdists "" $@ | |
703 | } | |
704 | multdists_terminate() | |
705 | { | |
706 | (cd ${name}_mcmultdists_${now} && terminate) | |
707 | (cd ${name}_multdists_${now} && terminate) | |
708 | } | |
709 | multdists_upload() | |
710 | { | |
711 | echo "Upload does not make sense for P(Nch) jobs" | |
712 | } | |
713 | multdists_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 | # | |
728 | runIt() | |
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 | ||
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 |