dc876bb5097f3608330d4421a2885687ddb235f0
[u/mrichter/AliRoot.git] / prod / cosmic / rawqa.sh
1 #!/bin/sh 
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
13 # SET THE FOLLOWING PARAMETERS IF NEEDED: 
14 # ---------------------------------------
15 export YEAR=10
16 # ---------------------------------------
17 kill -9 `ps | grep aliroot | awk '{print $1}'`
18
19 export RUNNUM=$1
20
21 [ -z $RUNNUM ] && { echo "Please provide a run number..."; exit 1; }
22
23 [ ! -e "$HOME/.globus/usercert.pem" ] && { echo "FAILED: There is no certificate in $HOME/.globus"; exit 1; }
24
25 #[ -e "/tmp/gclient_env_$UID" ] && { source /tmp/gclient_env_$UID; }
26 #echo 12==========================  $LD_LIBRARY_PATH
27 alien-token-init 
28 source /tmp/gclient_env_$UID;
29
30 [ ! "$?" -eq "0" ] && { echo "FAILED: Token creation failed"; exit 1; }
31
32 VERSION=1.0
33 TITLE="Standalone QA checking of Grid rawdata chunks. v$VERSION"
34
35 # Retrieve the list of chunks from AliEn.......
36 export BASEDIR="/alice/data/20"$YEAR/LHC${YEAR}*
37 PATTERN="$RUNNUM/raw/${YEAR}*${RUNNUM}*.root"
38 #aliensh -c "gbbox find $BASEDIR $PATTERN" | head --lines=-1 > collection.tmp
39 aliensh -c "gbbox find $BASEDIR $PATTERN" > collection.tmp
40
41 [ `ls -al collection.tmp | awk '{print $5}'` -eq 0 ] && { echo "No chunks found for the given run"; exit 1; }
42 rm -r collection.tmp2
43 #
44 for ifile in `cat collection.tmp | grep root` ; do printf $ifile" "\|" "0" " >> collection.tmp2 ; done
45 list=`cat collection.tmp2`
46 [ -e collection.tmp2 ] && { rm -f collection.tmp2 ; } 
47 totChunks=`cat collection.tmp | wc -l`
48 rm -f collection.tmp
49
50 tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
51 trap "rm -f $tempfile" 0 1 2 5 15
52 dialog --clear --no-cancel --title "$TITLE" \
53         --ok-label OK --checklist "$totChunks chunks available for run $RUNNUM (only the first 500 are shown). Select chunks for reconstruction" 18 80 10 \
54         $list 2> $tempfile
55
56 CHUNKS=`cat $tempfile`
57 echo "Selected chunks:"
58 echo $CHUNKS
59 echo
60
61 #dialog --clear --no-cancel \
62 #        --ok-label OK --radiolist "Program to run:" 15 20 5 "aliroot -b" \| on alieve \| off 2> $tempfile
63 PROGRAM=aliroot #`cat $tempfile`
64
65
66 for filename in $CHUNKS; do
67      CHUNK=`basename $filename | cut -d "." -f 1,2`
68      BEG=`expr index "$CHUNK" .`
69      BEG=`expr $BEG - 4`
70      SUBCHUNK=${CHUNK:$BEG}
71      echo "Running QA for chunk $filename. Outputs will be stored in "$RUNNUM"/"$CHUNK".   $SUBCHUNK"
72      [ -e $RUNNUM"/"$CHUNK ] && { rm -rf   $RUNNUM"/"$CHUNK ; }
73      mkdir -p $RUNNUM"/"$CHUNK
74      rm $RUNNUM"/"*.QA.$RUNNUM.$SUBCHUNK.root 
75      rm $RUNNUM"/"QA.$SUBCHUNK.root 
76      cd       $RUNNUM"/"$CHUNK
77 $PROGRAM -b<<EOF
78 .L $ALICE_ROOT/prod/cosmic/rawqa.C+
79 rawqa($filename, $RUNNUM)
80 .q 
81 EOF
82
83 $PROGRAM -b <<EOF
84 AliQAManager * qam = AliQAManager::QAManager(AliQAv1::kRECMODE) ; 
85  qam.Merge(atoi(gSystem->Getenv("RUNNUM"))) ;
86  .q
87 EOF
88      rm *QA.$RUNNUM.root
89      cd ..
90 done
91 ls */Merged.QA.Data.root > merged.list
92 outfile="Merged.QA.Data."$RUNNUM".root"
93 $PROGRAM -b <<EOF
94 .L $ALICE_ROOT/test/cosmic/MergeQAMerged.C
95 MergeQAMerged("$outfile", "merged.list") ; 
96 .q
97 EOF
98 rm -f merged.list
99 #$PROGRAM -b -q $ALICE_ROOT/test/cosmic/qasummary.C 
100 #$PROGRAM -b  $ALICE_ROOT/test/QA/menuQA.C
101 cd ..