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