]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/muon/runQA.sh
Transition PWG3 --> PWGHF
[u/mrichter/AliRoot.git] / PWG / muon / runQA.sh
CommitLineData
352cd18c 1#!/bin/bash
2
3qaMacroDir="$ALICE_ROOT/PWG3/muon"
4
5baseOutDir=`pwd`
6
7
8mergeLog="logMerge.txt"
9mergeOut=""
10terminateDir="${baseOutDir}/terminateRuns"
11outTaskName="QAresults.root"
02f48894 12mergeFast=0
352cd18c 13
14execMerge=1
15execMergeAll=1
16execTerminate=1
17execTrigQA=1
18execTrackQA=1
8415c156 19isPrivateProd=0
02f48894 20optList="mfateko:pi:"
21inputTriggerList="0x0"
8415c156 22while getopts $optList option
352cd18c 23do
24 case $option in
25 m ) execMerge=0;;
02f48894 26 f ) mergeFast=1;;
352cd18c 27 a ) execMergeAll=0;;
28 t ) execTerminate=0;;
29 e ) execTrigQA=0;;
30 k ) execTrackQA=0;;
8415c156 31 o ) outTaskName=$OPTARG;;
32 p ) isPrivateProd=1;;
33 i ) inputTriggerList=$OPTARG;;
352cd18c 34 * ) echo "Unimplemented option chosen."
35 EXIT=1
36 ;;
37 esac
38done
39
40shift $(($OPTIND - 1))
41
42# needs 3 arguments
43if [[ $# -ne 3 || "$EXIT" -eq 1 ]]; then
8415c156 44 echo "Usage: `basename $0` (-$optList) <runList.txt> <QAx> <alien:///alice/data/20XX/LHCXXy>"
352cd18c 45 echo " -m skip merging (default: run)"
02f48894 46 echo " -f merge fast, skip incomplete prod."
352cd18c 47 echo " -a skip final merging (default: run)"
48 echo " -t skip terminate (default: run)"
49 echo " -e skip run trigger efficiency QA (defult: run)"
50 echo " -k skip run muon QA (defult: run)"
8415c156 51 echo " -o task output name (default: QAresults.root)"
52 echo " -p is private production. Use directory structure of the plugin"
53 echo " -i input trigger list (default: no list)"
352cd18c 54 exit 4
55fi
56
57loadLibs="gSystem->Load(\"libANALYSIS.so\");gSystem->Load(\"libOADB.so\");gSystem->Load(\"libANALYSISalice.so\");gSystem->Load(\"libCORRFW.so\");gSystem->Load(\"libPWG3base.so\");"
58
59function mergePerRun()
60{
61 echo "Merging each run..."
62 cd $baseOutDir
63 runListName="$1"
64 prodDir="$2"
65 alienBaseDir="$3"
66 aliroot -b <<EOF &> $mergeLog
67.L $qaMacroDir/mergeGridFiles.C+
02f48894 68completeProd("${runListName}","${prodDir}","${alienBaseDir}","${outTaskName}",50,"MUON_QA MUON.TriggerEfficiencyMap",${mergeFast});
352cd18c 69.q
70EOF
71}
72
73function mergeRuns()
74{
75 echo "Merge all runs"
76 cd $baseOutDir
77 fileListName=$1
78 outFilename=$2
79 aliroot -b <<EOF &> logMergeAll.txt
80${loadLibs}
81gSystem->Load("libANALYSIS.so");gSystem->Load("libOADB.so");gSystem->Load("libANALYSISalice.so");gSystem->Load("libCORRFW.so");gSystem->Load("libPWG3base.so");
82.x $qaMacroDir/mergeGridFiles.C+("${outFilename}","${fileListName}","");
83.q
84EOF
85
86}
87
88function terminateRuns()
89{
90 echo "Terminating runs..."
91 cd $baseOutDir
92 currList=`cat $1 | xargs`
93 if [ ! -d $terminateDir ]; then
94 mkdir $terminateDir
95 fi
96 for file in $currList; do
97 cd $terminateDir
98 aliroot -b <<EOF &> logCopy.txt
99.L $qaMacroDir/terminateQA.C+
100CopyFile("$file","$terminateDir",1,"${outTaskName}")
101.q
102EOF
103 outDir=`grep outDir logCopy.txt | cut -d ":" -f 2`
104 #outFile=`grep outFile logCopy.txt | cut -d ":" -f 2`
105 forceTerminate=`grep -c "run number not found" logCopy.txt`
106
107 rm logCopy.txt
108
109 cd $outDir
110 #ln -s $qaMacroDir/SetAlienHandler.C
111
112
113 aliroot -b <<EOF &> logTerminate.txt
114.x $qaMacroDir/terminateQA.C("${outTaskName}",$forceTerminate)
115.q
116EOF
117 rm logTerminate.txt
118 #.x $qaMacroDir/runAnalysisTask.C("terminate","grid terminate","",kFALSE,"${outTaskName}");
119
120 #if [ -L "SetAlienHandler.C" ]; then
121 #rm SetAlienHandler.C
122 #fi
123 if [ -e "outputs_valid" ]; then
124 rm outputs_valid
125 fi
126 cd $baseOutDir
127 done
128}
129
130function runTrigQA() {
131 echo "Running trigger QA"
132 cd $baseOutDir
133 runListName="$1"
134 outFileName="$2"
135 aliroot -b <<EOF &> logTrigEffQA.txt
136.x $qaMacroDir/trigEffQA.C+("${runListName}","${outFileName}");
137.q
138EOF
139}
140
141function runTrackQA() {
142 echo "Running tracker QA"
143 cd $terminateDir
144 physSel="$1"
145 alienBaseDir="$2"
146 lhcPeriod=`echo ${alienBaseDir%"/"} | awk -F "/" ' { print $NF } '`
147 aliroot -b <<EOF &> logTrackQA.txt
148${loadLibs}
02f48894 149.x $qaMacroDir/PlotMuonQA.C+("${terminateDir}",0x0,${inputTriggerList},${physSel},"${lhcPeriod}","${outTaskName}");
352cd18c 150.q
151EOF
152 cd $baseOutDir
153}
154
8415c156 155# Use absolute path for file inputTriggerList
02f48894 156if [ "${inputTriggerList}" != "0x0" ]; then
8415c156 157 inputTriggerDir=`dirname ${inputTriggerList}`
158 if [ "${inputTriggerDir}"="." ]; then
159 inputTriggerList="`pwd`/${inputTriggerList}"
160 fi
02f48894 161 inputTriggerList="\"${inputTriggerList}\""
8415c156 162fi
163
164qaProdName="$2"
165if [ $isPrivateProd -eq 1 ]; then
166 tmpName=${qaProdName//"private"/""}
167 if [ "$tmpName" == "$qaProdName" ]; then
168 qaProdName="${qaProdName}_private"
169 fi
170fi
171
352cd18c 172if [ $execMerge -eq 1 ]; then
8415c156 173 mergePerRun $1 $qaProdName $3
352cd18c 174fi
175mergeOut=`grep -A 1 "Output written" ${mergeLog} | grep -v written`
176mergeOutAll=${mergeOut//".txt"/"_merged.txt"}
177
178if [ $execMergeAll -eq 1 ]; then
179 mergeRuns $mergeOut "QAresults_Merged.root"
180 cp -p $mergeOut $mergeOutAll
181 echo "${baseOutDir}/QAresults_Merged.root" >> $mergeOutAll
182fi
183
184if [ ! -e $mergeOutAll ]; then
185 mergeOutAll=$mergeOut
186fi
187
188if [ $execTerminate -eq 1 ]; then
189 terminateRuns $mergeOutAll
190fi
191
192if [ $execTrigQA -eq 1 ]; then
02f48894 193# minRun=`echo ${mergeOut} | cut -d "_" -f 2`
194# maxRun=`echo ${mergeOut} | cut -d "_" -f 3 | cut -d "." -f 1`
195# trigOutSuffix=`echo ${qaProdName} | awk -F "/" '{ print $NF }'`
196 trigOutSuffix=`echo $3 | awk -F "/" '{ print $NF }'`
197# outName="trigEffQA_${minRun}_${maxRun}_${trigOutSuffix}.root"
198 outName="trigEffQA_${trigOutSuffix}.root"
199
352cd18c 200 runTrigQA "${mergeOut}" "${outName}"
201fi
202
203if [ $execTrackQA -eq 1 ]; then
204 runTrackQA 1 $3
205fi