12e6d563 |
1 | #!/bin/sh |
de3b7b4d |
2 | ############################################################################# |
3 | # rawqa.sh. Front-end script to run reconstruction from the grid chunks |
4 | # Usage: |
5 | # ./rawqa.sh <run_number> |
6 | ############################################################################# |
7 | # |
8 | # modification history |
9 | # version 1.0 July 2008 adapated from rec.C by M. Meoni |
10 | # author Yves Schutz CERN |
11 | # |
12 | |
de3b7b4d |
13 | # SET THE FOLLOWING PARAMETERS IF NEEDED: |
14 | # --------------------------------------- |
15 | export YEAR=08 |
de3b7b4d |
16 | # --------------------------------------- |
17 | |
35bb17ae |
18 | export RUNNUM=$1 |
de3b7b4d |
19 | |
20 | [ -z $RUNNUM ] && { echo "Please provide a run number..."; exit 1; } |
21 | |
22 | [ ! -e "$HOME/.globus/usercert.pem" ] && { echo "FAILED: There is no certificate in $HOME/.globus"; exit 1; } |
23 | |
24 | [ -e "/tmp/gclient_env_$UID" ] && { source /tmp/gclient_env_$UID; } |
12e6d563 |
25 | echo 12========================== $LD_LIBRARY_PATH |
de3b7b4d |
26 | alien-token-init |
27 | |
28 | [ ! "$?" -eq "0" ] && { echo "FAILED: Token creation failed"; exit 1; } |
29 | |
30 | VERSION=1.0 |
31 | TITLE="Standalone QA checking of Grid rawdata chunks. v$VERSION" |
32 | |
33 | # Retrieve the list of chunks from AliEn....... |
34 | export BASEDIR="/alice/data/20"$YEAR |
35 | PATTERN="/raw/"$YEAR"0000"$RUNNUM"*0.root" |
36 | #aliensh -c "gbbox find $BASEDIR $PATTERN" | head --lines=-1 > collection.tmp |
37 | aliensh -c "gbbox find $BASEDIR $PATTERN" > collection.tmp |
38 | |
39 | [ `ls -al collection.tmp | awk '{print $5}'` -eq 0 ] && { echo "No chunks found for the given run"; exit 1; } |
40 | rm -r collection.tmp2 |
41 | # |
42 | for ifile in `cat collection.tmp | grep root` ; do printf $ifile" "\|" "0" " >> collection.tmp2 ; done |
43 | list=`cat collection.tmp2` |
44 | [ -e collection.tmp2 ] && { rm -f collection.tmp2 ; } |
45 | totChunks=`cat collection.tmp | wc -l` |
46 | rm -f collection.tmp |
47 | |
48 | tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$ |
49 | trap "rm -f $tempfile" 0 1 2 5 15 |
50 | dialog --clear --no-cancel --title "$TITLE" \ |
51 | --ok-label OK --checklist "$totChunks chunks available for run $RUNNUM (only the first 500 are shown). Select chunks for reconstruction" 18 80 10 \ |
52 | $list 2> $tempfile |
53 | |
54 | CHUNKS=`cat $tempfile` |
55 | echo "Selected chunks:" |
56 | echo $CHUNKS |
57 | echo |
58 | |
59 | #dialog --clear --no-cancel \ |
60 | # --ok-label OK --radiolist "Program to run:" 15 20 5 "aliroot -b" \| on alieve \| off 2> $tempfile |
61 | PROGRAM=aliroot #`cat $tempfile` |
12e6d563 |
62 | |
de3b7b4d |
63 | # |
64 | for filename in $CHUNKS; do |
65 | filename=${filename//\"/} |
66 | CHUNK=`basename $filename | cut -d "." -f 1,2` |
35bb17ae |
67 | SUBCHUNK=${CHUNK#*.} |
68 | echo "Running QA for chunk $filename. Outputs will be stored in "$RUNNUM"/"$CHUNK". $SUBCHUNK" |
12e6d563 |
69 | [ -e $RUNNUM"/"$CHUNK ] && { rm -rf $RUNNUM"/"$CHUNK ; } |
de3b7b4d |
70 | mkdir -p $RUNNUM"/"$CHUNK |
12e6d563 |
71 | rm $RUNNUM"/"*.QA.$RUNNUM.$SUBCHUNK.root |
72 | rm $RUNNUM"/"QA.$SUBCHUNK.root |
de3b7b4d |
73 | cd $RUNNUM"/"$CHUNK |
74 | $PROGRAM -q $ALICE_ROOT/test/cosmic/rawqa.C\(\"$filename\"\) 2>&1 | tee rawqa.log |
35bb17ae |
75 | ls *.QA.$RUNNUM.0.root > $tempfile |
76 | cd ../ |
77 | QAFILES=`cat $tempfile` |
78 | for qafile in $QAFILES; do |
79 | in=$CHUNK/$qafile |
80 | ou=${qafile/.0./.$SUBCHUNK.} |
81 | ln -si $in $ou |
82 | done |
83 | ln -si $CHUNK/QA.root QA.$SUBCHUNK.root |
84 | cd ../ |
de3b7b4d |
85 | done |
35bb17ae |
86 | cd $RUNNUM |
87 | $PROGRAM -b <<EOF |
88 | AliQADataMakerSteer qas ; |
89 | qas.Merge(atoi(gSystem->Getenv("RUNNUM"))) ; |
90 | EOF |
91 | rm -f tempo.txt |
92 | |
12e6d563 |
93 | $PROGRAM -b -q $ALICE_ROOT/test/cosmic/qasummary.C 2>&1 | tee rawqasummary.log |
35bb17ae |
94 | cd .. |