]>
Commit | Line | Data |
---|---|---|
a571aae4 | 1 | #!/bin/sh |
e0381e22 | 2 | ############################################################################# |
3 | # alirun - a shell script to run AliRoot | |
4 | ############################################################################# | |
5 | # | |
6 | # modification history | |
9e1a0ddb | 7 | # |
e0381e22 | 8 | # $Log$ |
682a4a95 | 9 | # Revision 1.6 2001/05/16 14:57:30 alibrary |
10 | # New files for folders and Stack | |
11 | # | |
9e1a0ddb | 12 | # |
13 | # Revision 1.5 2001/02/23 17:33:40 buncic | |
14 | # Added alifs wrapper for CASTOR and alirun modified accordingly. | |
15 | # | |
124fe280 | 16 | # Revision 1.4 2001/02/08 18:55:43 buncic |
17 | # Support for writing to remote file systems (shift/castor). | |
18 | # | |
a571aae4 | 19 | # Revision 1.3 2001/02/01 18:00:23 buncic |
20 | # Use bash in place of sh for compatibility | |
21 | # | |
572784b9 | 22 | # Revision 1.2 2001/02/01 17:46:26 buncic |
23 | # Fixed mktemp on HP and Sun | |
24 | # | |
da41e58d | 25 | # Revision 1.1 2001/01/26 21:22:02 hristov |
26 | # Major upgrade of AliRoot code | |
27 | # | |
e0381e22 | 28 | # |
29 | # SYNOPSIS | |
30 | # alirun [[-d <TPC+ITS+..>|-all]] | |
31 | # [-f <hits file>] | |
32 | # [-o <output directory>] | |
33 | # [-split] | |
34 | # [-C <Config.C>] | |
35 | # [-p <particle#>] | |
36 | # [-seed <seed for random number generator>] | |
37 | # [-n <event #>] | |
38 | # <-c <command ...>> | |
39 | # | |
40 | # DESCRIPTION | |
41 | # This script is a wrapper for AliRoot and provides a command line interface suitable for running in batch mode. | |
42 | # | |
43 | # CONFIGURATION OPTIONS | |
44 | # The following options are used to configure AliRoot session. | |
45 | # | |
46 | # -c <command1 command2 ...> | |
47 | # This option must be the last one on alirun command line and specifies the sequence of alirun commands to be executed. At present, the following commands are supported: | |
48 | # | |
49 | # - Hits ................ simulation | |
50 | # - Digits .............. digitisation | |
51 | # - SDigits ............. creation of sumable digits | |
52 | # - SDigits2Digits ...... conversion SDigits->Digits | |
124fe280 | 53 | # - Reco ................ reconstruction |
e0381e22 | 54 | # |
55 | # -d <TPC+ITS+..> | -d all | -all | |
56 | # Selects detector for which <command> will be run. If none of these options was specified, an internal loop in AliRoot over all active detectors is assumed. Otherwise, for each detector, input file(s) are re-opened in update mode, command (or macro) is executed and the file is closed. Option -all is equivalent to MUON+RICH+TOF+ITS+TPC+PHOS+PMD+CASTOR+TRD. Detectors are processed in order as they appear on the command line. | |
57 | # | |
58 | # -f <file> | |
59 | # Name of the top level Root file where Root trees will be stored (branches may reside in the same file or be diverted to separate files (see -split option). By default, file is named galice.root. | |
60 | # | |
61 | # -o <directory> | |
124fe280 | 62 | # A directory where output file(s) will be stored. If does not exist, it will be created. If not specified, current directory is used. One can prefix the directory name with a string indicting file transport protocols (as supported by ROOT). In addition, some file transport protocols are selected by name signatures. At present the following methods are available: |
63 | # | |
64 | # o) if file name begins with rfio:, shift:, castor:, hpss:, /shift, /castor, /hpss => rfio (remote file i/o) protocol (requires rfiod on server side) | |
65 | # o) if file name begins with root:, roots: => root and secure root protocol (requires rootd on server side) | |
66 | # o) if file name begins with http: => HTTP protocol (requires modified apache server on server side) | |
e0381e22 | 67 | # |
68 | # -split | |
69 | # If specified, this option will tell AliRoot to divert branches of Root trees into separate files. | |
70 | # | |
71 | # The layout of output directory is the following: | |
72 | # | |
73 | # <directory> | |
74 | # |-- Digits.<detector>.root | |
75 | # |-- SDigits.<detector>.root | |
76 | # |-- Hits.root | |
77 | # |-- Kine.root | |
78 | # |-- Reco.root | |
79 | # `-- galice.root | |
80 | # | |
81 | # -C <macro.C> | |
82 | # An alternative to Config.C macro which contains AliRoot configuration. | |
83 | # | |
84 | # -p <n> | |
85 | # Number of primary particles to be generated by selected event generator. Required for Hits command, Ignored by Digits command (digitisation is performed for all particles found in input file). Default value is 50. | |
86 | # | |
87 | # -seed <n> | |
88 | # Seed for random number generator (used to initialise TRandom3(n)). | |
89 | # | |
90 | # -n <n> | |
91 | # Number of events to generate (not yet implemented). | |
92 | # | |
93 | # RUN OPTIONS | |
94 | # These options define run time appearance of the AliRoot session. | |
95 | # | |
96 | # -help | |
97 | # Display usage. | |
98 | # | |
99 | # -verbose | |
100 | # Switch verbose screen output on. | |
101 | # | |
102 | # -quiet | |
103 | # Switch verbose output off. Output is redirected to a file which is shown on standard output only if <command> returns non zero status. | |
104 | # | |
105 | # -fork | |
106 | # Forks all digitisation processes in background, using LSF if available, in order to speed up execution. It cannot be used in present design where only tree branches are diverted to separate files as top level Root file must be kept open in update mode. | |
107 | # | |
108 | # -trace | |
109 | # Show trace of execution of shell commands. | |
110 | # | |
111 | # -debug | |
112 | # Execute AliRoot under gdb. | |
113 | # | |
124fe280 | 114 | # -debugger <command_name> |
115 | # Execute AliRoot under debugger other than gdb. | |
116 | # | |
9e1a0ddb | 117 | # -debuglevel <level> |
118 | # Set AliRoot debug flag to <level>. | |
119 | # | |
e0381e22 | 120 | # -break <breakpoint> |
121 | # Execute AliRoot under gdb and set <breakpoint>. | |
122 | # | |
123 | # -makeman | |
124 | # Create man page for alirun. | |
125 | # | |
126 | # EXAMPLES | |
124fe280 | 127 | # Run sumulation for 1 event, 100 particles and store output in file galice.root in /tmp/event.1 directory: |
e0381e22 | 128 | # |
124fe280 | 129 | # alirun -o /tmp/event.1 -p 100 -c Hits |
e0381e22 | 130 | # |
124fe280 | 131 | # Run sumulation for 1 event, 100 particles and store output in file test.root in /tmp/event.2 directory. In adition, divert branches of TreeD,TreeR and TreeK into separate files: |
e0381e22 | 132 | # |
124fe280 | 133 | # alirun -o /tmp/event.2 -f test.root -split -p 100 -c Hits |
e0381e22 | 134 | # |
135 | # Use output from first step and create TOF and RICH digits. Output is in the same direcory and in file test.root | |
136 | # | |
124fe280 | 137 | # alirun -d TOF+RICH -o /tmp/event.1 -c Digits |
e0381e22 | 138 | # |
139 | # Use output from second step and create digits for all detectors. Output is in the same direcory and branches are diverted to separate files: | |
140 | # | |
124fe280 | 141 | # alirun -d all -o /tmp/event.2 -f test.root -split -c Digits |
e0381e22 | 142 | # |
143 | # AUTHOR: | |
144 | # Predrag Buncic, e-mail: Predrag.Buncic@cern.ch | |
145 | # | |
146 | # CREATION DATE: | |
147 | # 06-Nov-2000 | |
148 | # | |
149 | #C< | |
150 | ########################################################################### | |
124fe280 | 151 | |
a571aae4 | 152 | if [ "$ALIRUN_SHELL" = "" ] |
153 | then | |
154 | ALIRUN_SHELL=bin/sh | |
155 | for shell in bash zsh ksh | |
156 | do | |
157 | for dir in /bin /usr/bin /usr/local/bin | |
158 | do | |
159 | if [ -x $dir/$shell ] | |
160 | then | |
161 | ALIRUN_SHELL=$dir/$shell; export ALIRUN_SHELL | |
162 | break 2 | |
163 | fi | |
164 | done | |
165 | done | |
166 | exec $ALIRUN_SHELL -norc -noprofile $0 $* | |
167 | fi | |
124fe280 | 168 | |
682a4a95 | 169 | |
e0381e22 | 170 | ########################################################################### |
171 | AliRun() | |
172 | ########################################################################### | |
173 | { | |
174 | printf "Usage: alirun [[-d <TPC+ITS+..>|-all]]\n" | |
175 | printf " [-f <hits file>]\n" | |
176 | printf " [-o <output directory>]\n" | |
177 | printf " [-split]\n" | |
178 | printf " [-C <Config.C>]\n" | |
179 | printf " [-p <particle#>]\n" | |
180 | printf " [-seed <seed for random number generator>]\n" | |
181 | printf " [-n event #]\n" | |
182 | printf " <-c <command ...>>\n" | |
183 | exit | |
184 | } | |
185 | ||
682a4a95 | 186 | ########################################################################### |
187 | AliSetRoot() | |
188 | ########################################################################### | |
189 | { | |
190 | ALICE_ROOT=$1; export ALICE_ROOT | |
191 | ALICE=`dirname $ALICE_ROOT`; export ALICE | |
192 | ALICE_LEVEL=`basename $ALICE_ROOT`; export ALICE_LEVEL | |
193 | ALICE_TARGET=`uname`; export ALICE_TARGET | |
194 | ROOTSYS=$2; export ROOTSYS | |
195 | ||
196 | LD_LIBRARY_PATH=$ROOTSYS/lib | |
197 | ||
198 | if [ -f $ALICE/bin/changeRoot.sh ] | |
199 | then | |
200 | . $ALICE/bin/changeRoot.sh \ | |
201 | $ALICE $ALICE_LEVEL $ALICE_TARGET $ROOTSYS | |
202 | fi | |
203 | ||
204 | if [ ! -x $ALICE_BIN/aliroot -o ! -x $ROOTSYS/bin/root ] | |
205 | then | |
206 | printf "Invalid Alice library directory: %s\n" $1 | |
207 | exit 1 | |
208 | fi | |
209 | ||
210 | LD_LIBRARY_PATH=${ROOTSYS}/lib:${ALICE_LIB}; export LD_LIBRARY_PATH | |
211 | PATH=${ALICE_BIN}:${ROOTSYS}/bin:${PATH}; export PATH | |
212 | ||
213 | printf "ALICE environment reset to %s\n" $ALICE_ROOT | |
214 | which root | |
215 | which aliroot | |
216 | } | |
217 | ||
e0381e22 | 218 | ########################################################################### |
219 | Mktemp() | |
220 | ########################################################################### | |
221 | { | |
da41e58d | 222 | # mktemp -qu /tmp/alirun.$$.XXXXXX |
223 | echo /tmp/alirun.$$. | |
e0381e22 | 224 | } |
225 | ||
a571aae4 | 226 | ########################################################################### |
124fe280 | 227 | ConfigureIO() |
a571aae4 | 228 | ########################################################################### |
229 | { | |
124fe280 | 230 | if [ "$1" != "" ] |
a571aae4 | 231 | then |
124fe280 | 232 | case $1 in |
233 | CASTOR) | |
234 | MKDIR="alifs mkdir" | |
235 | RMDIR="alifs rm -r" | |
236 | STAT="/usr/local/bin/rfstat" | |
237 | if [ "$STAGE_HOST" = "" ] | |
238 | then | |
239 | unset STAGE_HOST | |
240 | fi | |
241 | if [ "$STAGE_POOL" = "" ] | |
242 | then | |
243 | unset STAGE_POOL | |
244 | fi | |
245 | ;; | |
246 | RFIO) | |
247 | MKDIR="/usr/local/bin/rfmkdir" | |
248 | RMDIR="echo y | /usr/local/bin/rfrm -r" | |
249 | STAT="/usr/local/bin/rfstat" | |
250 | ;; | |
251 | LOCAL) | |
252 | MKDIR="mkdir" | |
253 | RMDIR="rm -rf" | |
254 | STAT="test -d" | |
255 | ;; | |
256 | *) | |
257 | printf "%s I/O not yet supported by alirun.\n" $1 | |
258 | exit 255 | |
259 | ;; | |
260 | esac | |
a571aae4 | 261 | fi |
262 | } | |
263 | ||
124fe280 | 264 | |
e0381e22 | 265 | ########################################################################### |
266 | Cleanup() | |
267 | ########################################################################### | |
268 | { | |
a571aae4 | 269 | $STAT $ALIRUN_TMPDIR > /dev/null 2>&1 |
270 | if [ $? -eq 0 ] | |
e0381e22 | 271 | then |
a571aae4 | 272 | $RMDIR $ALIRUN_TMPDIR >/dev/null 2>&1 |
e0381e22 | 273 | fi |
274 | } | |
275 | ||
276 | ########################################################################### | |
277 | AliRoot() | |
278 | ########################################################################### | |
279 | { | |
280 | case $1 in | |
281 | Hits) | |
282 | macro=`HitsMacro` | |
283 | ;; | |
284 | Digits) | |
124fe280 | 285 | macro=`GenericMacro Hits2Digits` |
e0381e22 | 286 | ;; |
287 | SDigits) | |
124fe280 | 288 | macro=`GenericMacro Hits2SDigits` |
e0381e22 | 289 | ;; |
290 | SDigits2Digits) | |
124fe280 | 291 | macro=`GenericMacro SDigits2Digits` |
292 | ;; | |
293 | Reco) | |
294 | macro=`GenericMacro RunReco` | |
e0381e22 | 295 | ;; |
296 | *.C|*.C\(*\)) | |
297 | macro=$1 | |
298 | ;; | |
299 | *) | |
300 | printf "Unknown command: %s. Terminating...\n" $1 | |
301 | exit 255 | |
302 | ;; | |
303 | esac | |
304 | ||
305 | if [ "$2" != "" ] | |
306 | then | |
307 | CONTEXT="<"$2">" | |
308 | else | |
309 | CONTEXT="<"None">" | |
310 | fi | |
311 | ||
312 | stdout=$ALIRUN_TMPDIR/STDOUT.$${$CONTEXT} | |
313 | ||
314 | hr="========================================" | |
315 | ||
316 | if [ "$VERBOSE" = "FALSE" ] | |
317 | then | |
318 | printf "%s\n+ aliroot -q -b %s %s\n%s\n" $hr$hr $1 $CONTEXT $hr$hr | |
319 | fi > $stdout | |
320 | ||
321 | if [ "$DEBUG" = "TRUE" ] | |
322 | then | |
323 | cat<<EOF>$ALIRUN_TMPDIR/gdb | |
324 | b main | |
325 | r -q -b $macro | |
326 | disable breakpoints | |
327 | b $BREAK | |
328 | c | |
329 | where | |
330 | EOF | |
124fe280 | 331 | $ECHO $ALIRUN_DEBUGGER -q -x $ALIRUN_TMPDIR/gdb aliroot |
e0381e22 | 332 | else |
333 | if [ "$VERBOSE" = "TRUE" ] | |
334 | then | |
335 | $ECHO aliroot -q -b $macro | |
124fe280 | 336 | if [ $? -ne 0 ] |
337 | then | |
338 | exit $? | |
339 | fi | |
e0381e22 | 340 | else |
341 | $ECHO aliroot -q -b $macro > $stdout 2>&1 | |
342 | if [ $? -ne 0 ] | |
343 | then | |
344 | echo "- "aliroot -q -b " "$1" "$CONTEXT | |
345 | cat $stdout | |
346 | exit | |
347 | else | |
348 | echo "+ "aliroot -q -b " "$1" "$CONTEXT | |
349 | fi | |
350 | fi | |
351 | fi | |
352 | ||
353 | } | |
354 | ||
355 | ||
356 | ########################################################################### | |
357 | HitsMacro() | |
358 | ########################################################################### | |
359 | { | |
360 | macro=$ALIRUN_TMPDIR/Simulate.C | |
361 | ||
362 | cat <<EOF> $macro | |
363 | ||
364 | //////////////////////////////////////////////////////////////////////////// | |
365 | void Simulate() | |
366 | { | |
a571aae4 | 367 | TFile *file = TFile::Open(gSystem->Getenv("CONFIG_FILE"),"recreate"); |
368 | ||
124fe280 | 369 | $USE_CACHE; |
a571aae4 | 370 | |
371 | file->SetCompressionLevel(2); | |
372 | ||
373 | gAlice->SetBaseFile(gSystem->DirName(gSystem->Getenv("CONFIG_FILE"))); | |
374 | ||
e0381e22 | 375 | gAlice->Init(gSystem->Getenv("CONFIG")); |
376 | ||
9e1a0ddb | 377 | $DEBUG_LEVEL; |
378 | ||
379 | gAlice->RunMC($NEVENTS); | |
e0381e22 | 380 | } |
381 | //////////////////////////////////////////////////////////////////////////// | |
382 | ||
383 | EOF | |
384 | echo $macro | |
385 | } | |
386 | ||
387 | ########################################################################### | |
124fe280 | 388 | GenericMacro() |
e0381e22 | 389 | ########################################################################### |
390 | { | |
391 | mode=$1 | |
392 | ||
124fe280 | 393 | macro=$ALIRUN_TMPDIR/$mode.C |
e0381e22 | 394 | |
395 | cat <<EOF> $macro | |
396 | ||
397 | //////////////////////////////////////////////////////////////////////////// | |
124fe280 | 398 | void $mode() |
e0381e22 | 399 | { |
a571aae4 | 400 | TFile *file = TFile::Open(gSystem->Getenv("CONFIG_FILE"),"update"); |
401 | if (! file ) { | |
402 | cout << "Could not open Hits file. Exiting..." << endl; | |
403 | exit(1); | |
404 | } | |
405 | file->SetCompressionLevel(2); | |
406 | ||
124fe280 | 407 | $USE_CACHE; |
e0381e22 | 408 | |
409 | if (gAlice) delete gAlice; | |
410 | ||
a571aae4 | 411 | AliRun *gAlice = (AliRun*)file->Get("gAlice"); |
e0381e22 | 412 | |
9e1a0ddb | 413 | $DEBUG_LEVEL; |
414 | ||
e0381e22 | 415 | gAlice->$mode(gSystem->Getenv("CONFIG_DETECTOR")); |
416 | } | |
417 | //////////////////////////////////////////////////////////////////////////// | |
418 | ||
419 | EOF | |
420 | echo $macro | |
421 | } | |
422 | ||
423 | ########################################################################### | |
424 | AliRunMakeman() | |
425 | ########################################################################### | |
426 | { | |
a571aae4 | 427 | mandir=../man/man4 |
428 | ./mangen -n tool $0 | |
e0381e22 | 429 | if [ $? -eq 0 ] |
430 | then | |
a571aae4 | 431 | [ ! -d $mandir ] && mkdir -p $mandir |
432 | mv `basename $0`.? $mandir | |
433 | exit | |
e0381e22 | 434 | fi |
e0381e22 | 435 | } |
436 | ||
437 | ########################################################################### | |
438 | AliRunMacro() | |
439 | ########################################################################### | |
440 | { | |
441 | AliRoot $* | |
442 | } | |
443 | ||
444 | ########################################################################### | |
445 | AliRunHits() | |
446 | ########################################################################### | |
447 | { | |
448 | AliRoot Hits | |
449 | } | |
450 | ||
451 | ########################################################################### | |
9e1a0ddb | 452 | AliRunSplitCmd() |
e0381e22 | 453 | ########################################################################### |
454 | { | |
455 | if [ "$DETECTORS" = "" ] | |
456 | then | |
9e1a0ddb | 457 | AliRoot $1 |
e0381e22 | 458 | else |
459 | for det in $DETECTORS | |
460 | do | |
da41e58d | 461 | CONFIG_DETECTOR=$det; export CONFIG_DETECTOR |
e0381e22 | 462 | if [ "$FORK" = "TRUE" ] |
463 | then | |
464 | if [ "$LSF_FORK" = "TRUE" ] | |
465 | then | |
9e1a0ddb | 466 | lsrun AliRoot $1 $CONFIG_DETECTOR |
e0381e22 | 467 | else |
9e1a0ddb | 468 | AliRoot $1 $CONFIG_DETECTOR & |
e0381e22 | 469 | fi |
470 | else | |
9e1a0ddb | 471 | AliRoot $1 $CONFIG_DETECTOR |
e0381e22 | 472 | fi |
473 | done | |
474 | wait | |
475 | fi | |
476 | } | |
477 | ||
9e1a0ddb | 478 | ########################################################################### |
479 | AliRunDigits() | |
480 | ########################################################################### | |
481 | { | |
482 | AliRunSplitCmd Digits | |
483 | } | |
484 | ||
485 | ########################################################################### | |
486 | AliRunReco() | |
487 | ########################################################################### | |
488 | { | |
489 | AliRunSplitCmd Reco | |
490 | } | |
491 | ||
a571aae4 | 492 | ########################################################################### |
493 | ||
124fe280 | 494 | ALL="MUON RICH TOF ITS TPC PHOS PMD CASTOR ZDC TRD"; |
495 | DETECTORS=""; | |
a571aae4 | 496 | FILE="galice.root"; |
e0381e22 | 497 | |
da41e58d | 498 | CONFIG=$ALICE_ROOT/macros/Config.C; export CONFIG |
499 | CONFIG_NPARTICLES=50; export CONFIG_NPARTICLES | |
500 | CONFIG_PATH=`pwd`; export CONFIG_PATH | |
124fe280 | 501 | CONFIG_BATCH="TRUE"; export CONFIG_BATCH |
e0381e22 | 502 | |
da41e58d | 503 | ALIRUN_TMPDIR=`Mktemp`; export ALIRUN_TMPDIR |
124fe280 | 504 | ALIRUN_DEBUGGER=gdb |
e0381e22 | 505 | |
506 | DEBUG="FALSE" | |
9e1a0ddb | 507 | DEBUG_LEVEL="" |
e0381e22 | 508 | BREAK="" |
509 | VERBOSE="TRUE" | |
510 | OUTPUT=. | |
9e1a0ddb | 511 | CMDLIST="" |
e0381e22 | 512 | FORK="FALSE" |
513 | FORK_LSF="FALSE" | |
682a4a95 | 514 | BATCH="FALSE" |
e0381e22 | 515 | ECHO="" |
9e1a0ddb | 516 | NEVENTS=1 |
124fe280 | 517 | USE_CACHE="file->UseCache()" |
e0381e22 | 518 | |
519 | if [ -x /usr/local/lsf/bin/lsrun ] | |
520 | then | |
521 | FORK_LSF="TRUE" | |
522 | fi | |
523 | ||
524 | for config in $CONFIG_PATH/Config.C $ALICE_ROOT/macros/Config.C | |
525 | do | |
526 | if [ -f $config ] | |
527 | then | |
da41e58d | 528 | CONFIG=$config; export CONFIG |
e0381e22 | 529 | break |
530 | fi | |
531 | done | |
532 | ||
533 | for param in $* | |
534 | do | |
535 | case $param in | |
536 | -debug) | |
537 | shift 1 | |
538 | DEBUG="TRUE" | |
539 | ;; | |
124fe280 | 540 | -debugger) |
541 | shift 1 | |
542 | ALIRUN_DEBUGGER=$1 | |
543 | ;; | |
9e1a0ddb | 544 | -debuglevel) |
545 | shift 1 | |
546 | DEBUG_LEVEL="gAlice->SetDebug($1)" | |
547 | ;; | |
e0381e22 | 548 | -break) |
549 | shift 1 | |
550 | DEBUG="TRUE" | |
551 | BREAK=$1 | |
552 | ;; | |
553 | -trace) | |
554 | shift 1 | |
555 | set -vx | |
556 | ;; | |
682a4a95 | 557 | -setroot) |
558 | shift 1 | |
559 | AliSetRoot $1 $2 | |
560 | shift 1 | |
561 | ;; | |
562 | -batch) | |
563 | shift 1 | |
564 | BATCH="TRUE" | |
565 | ;; | |
e0381e22 | 566 | -echo) |
567 | shift 1 | |
568 | ECHO="echo " | |
569 | ;; | |
570 | -verbose) | |
571 | shift 1 | |
572 | VERBOSE="TRUE" | |
573 | ;; | |
574 | -quiet) | |
575 | shift 1 | |
576 | VERBOSE="FALSE" | |
577 | ;; | |
578 | -help) | |
579 | AliRun | |
580 | ;; | |
581 | -makeman) | |
582 | AliRunMakeman | |
583 | ;; | |
584 | -fork) | |
585 | shift 1 | |
586 | FORK="TRUE" | |
587 | ;; | |
588 | -d) | |
589 | shift 1 | |
590 | list=$1 | |
591 | if [ "$list" = "all" ] | |
592 | then | |
593 | DETECTORS=$ALL | |
594 | else | |
595 | DETECTORS=`echo $list | sed 's/+/ /g'` | |
596 | fi | |
597 | ;; | |
598 | -all) | |
599 | shift 1 | |
600 | DETECTORS=$ALL | |
601 | ;; | |
602 | -o) | |
603 | shift 1 | |
604 | OUTPUT=$1 | |
605 | ;; | |
606 | -split) | |
607 | shift 1 | |
da41e58d | 608 | CONFIG_SPLIT_FILE="TRUE"; export CONFIG_SPLIT_FILE |
e0381e22 | 609 | ;; |
610 | -f) | |
611 | shift 1 | |
a571aae4 | 612 | FILE=$1 |
e0381e22 | 613 | ;; |
614 | -n) | |
615 | shift 1 | |
616 | NEVENTS=$1 | |
617 | ;; | |
618 | -p) | |
619 | shift 1 | |
da41e58d | 620 | CONFIG_NPARTICLES=$1; export CONFIG_NPARTICLES |
e0381e22 | 621 | ;; |
622 | -seed) | |
623 | shift 1 | |
da41e58d | 624 | CONFIG_SEED=$1; export CONFIG_SEED |
e0381e22 | 625 | ;; |
124fe280 | 626 | -nocache) |
627 | shift 1 | |
628 | USE_CACHE="" | |
629 | ;; | |
e0381e22 | 630 | -c) |
631 | shift 1 | |
632 | CMDLIST=$* | |
633 | break | |
634 | ;; | |
635 | -C) | |
636 | shift 1 | |
124fe280 | 637 | CONFIG=$1; |
638 | if [ `dirname $CONFIG` = "." ] | |
639 | then | |
640 | CONFIG=`pwd`/$CONFIG | |
641 | fi | |
642 | export CONFIG | |
e0381e22 | 643 | ;; |
644 | *) | |
645 | shift 1 | |
646 | ;; | |
647 | esac | |
648 | done | |
649 | ||
9e1a0ddb | 650 | if [ "$CMDLIST" = "" ] |
651 | then | |
652 | AliRun | |
653 | fi | |
654 | ||
e0381e22 | 655 | if [ `dirname $OUTPUT` = "." ] |
656 | then | |
a571aae4 | 657 | CONFIG_OUTDIR=`pwd`/$OUTPUT |
658 | else | |
659 | CONFIG_OUTDIR=$OUTPUT | |
e0381e22 | 660 | fi |
661 | ||
a571aae4 | 662 | case $CONFIG_OUTDIR in |
124fe280 | 663 | rfio:*|/shift/*|shift:*) |
664 | CONFIG_FILE_PREFIX="rfio:" | |
665 | ConfigureIO RFIO | |
666 | ;; | |
667 | /castor/*|castor:*|hpss:*) | |
668 | CONFIG_FILE_PREFIX="rfio:" | |
669 | ConfigureIO CASTOR | |
670 | ;; | |
671 | hpss:*) | |
672 | CONFIG_FILE_PREFIX="rfio:" | |
673 | ConfigureIO RFIO | |
a571aae4 | 674 | ;; |
675 | root:*) | |
124fe280 | 676 | CONFIG_FILE_PREFIX="root:" |
677 | ConfigureIO ROOT | |
678 | ;; | |
679 | roots:*) | |
680 | CONFIG_FILE_PREFIX="roots:" | |
681 | ConfigureIO ROOT | |
a571aae4 | 682 | ;; |
683 | http:*) | |
124fe280 | 684 | CONFIG_FILE_PREFIX="http:" |
685 | ConfigureIO HTTP | |
a571aae4 | 686 | ;; |
687 | file:*) | |
124fe280 | 688 | CONFIG_FILE_PREFIX="" |
689 | ConfigureIO LOCAL | |
a571aae4 | 690 | ;; |
124fe280 | 691 | /*) |
692 | CONFIG_FILE_PREFIX="" | |
693 | ConfigureIO LOCAL | |
694 | ;; | |
a571aae4 | 695 | *) |
124fe280 | 696 | CONFIG_FILE_PREFIX=`pwd`/ |
697 | ConfigureIO LOCAL | |
a571aae4 | 698 | ;; |
699 | esac | |
700 | ||
701 | export CONFIG_OUTDIR | |
124fe280 | 702 | export CONFIG_FILE_PREFIX |
a571aae4 | 703 | |
124fe280 | 704 | $STAT $CONFIG_OUTDIR > /dev/null 2>&1 |
705 | if [ $? -ne 0 ] | |
706 | then | |
707 | $MKDIR -p $CONFIG_OUTDIR | |
708 | fi | |
709 | ||
124fe280 | 710 | CONFIG_FILE=$CONFIG_FILE_PREFIX$CONFIG_OUTDIR/$FILE; export CONFIG_FILE |
e0381e22 | 711 | |
682a4a95 | 712 | mkdir -p $ALIRUN_TMPDIR |
713 | ||
e0381e22 | 714 | trap Cleanup 2 |
715 | ||
716 | ( | |
a571aae4 | 717 | cd $ALIRUN_TMPDIR |
e0381e22 | 718 | for cmd in $CMDLIST |
719 | do | |
720 | case `type -t AliRun$cmd` in | |
721 | function) | |
722 | shift 1 | |
723 | AliRun$cmd $* | |
724 | ;; | |
725 | *) | |
726 | ;; | |
727 | esac | |
728 | done | |
729 | ) | |
730 | ||
a571aae4 | 731 | Cleanup |