3 qaMacroDir="$ALICE_ROOT/PWGPP/MUON/lite"
8 mergeLog="logMerge.txt"
10 terminateDir="${baseOutDir}/terminateRuns"
11 outTaskName="QAresults.root"
21 inputTriggerList="0x0"
22 while getopts $optList option
31 o ) outTaskName=$OPTARG;;
33 i ) inputTriggerList=$OPTARG;;
34 * ) echo "Unimplemented option chosen."
40 shift $(($OPTIND - 1))
43 if [[ $# -ne 3 || "$EXIT" -eq 1 ]]; then
44 echo "Usage: `basename $0` (-$optList) <runList.txt> <QAx> <alien:///alice/data/20XX/LHCXXy>"
45 echo " -m skip merging (default: run)"
46 echo " -f merge fast, skip incomplete prod."
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)"
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)"
57 loadAnalysisLibs="gSystem->Load(\"libANALYSIS.so\");gSystem->Load(\"libOADB.so\");gSystem->Load(\"libANALYSISalice.so\");gSystem->Load(\"libCORRFW.so\");gSystem->Load(\"libPWGmuon.so\");"
58 includeAliroot=" gSystem->AddIncludePath(\"-I${ALICE_ROOT}/include\");"
59 includeMuon=" gSystem->AddIncludePath(\"-I${ALICE_ROOT}/MUON\");"
61 function mergePerRun()
63 echo "Merging each run..."
69 aliroot -b <<EOF &> $mergeLog
70 .L $qaMacroDir/mergeGridFiles.C+
71 completeProd("${runListName}","${prodDir}","${alienBaseDir}","${outTaskName}",50,"MUON_QA MTR_ChamberEffMap MUON.TrigEfficiencyMap MUON.TriggerEfficiencyMap",${mergeFast});
82 aliroot -b <<EOF &> logMergeAll.txt
83 ${includeAliroot} ${loadAnalysisLibs}
84 .x $qaMacroDir/mergeGridFiles.C+("${outFilename}","${fileListName}","");
90 function terminateRuns()
92 echo "Terminating runs..."
94 currList=`cat $1 | xargs`
95 if [ ! -d $terminateDir ]; then
98 for file in $currList; do
100 aliroot -b <<EOF &> logCopy.txt
101 ${includeAliroot} ${loadAnalysisLibs}
102 .L $qaMacroDir/terminateQA.C+
103 CopyFile("$file","$terminateDir",1,"${outTaskName}")
106 outDir=`grep outDir logCopy.txt | cut -d ":" -f 2 | xargs`
107 #outFile=`grep outFile logCopy.txt | cut -d ":" -f 2`
108 forceTerminate=`grep -c "run number not found" logCopy.txt`
110 if [ "`pwd`" != "${outDir}" ]; then
111 mv logCopy.txt $outDir/
115 #ln -s $qaMacroDir/SetAlienHandler.C
118 aliroot -b <<EOF &> logTerminate.txt
119 ${includeAliroot} ${loadAnalysisLibs}
120 .x $qaMacroDir/terminateQA.C("${outTaskName}",$forceTerminate)
124 #.x $qaMacroDir/runAnalysisTask.C("terminate","grid terminate","",kFALSE,"${outTaskName}");
126 #if [ -L "SetAlienHandler.C" ]; then
127 #rm SetAlienHandler.C
129 if [ -e "outputs_valid" ]; then
136 function runTrigQA() {
137 echo "Running trigger QA"
141 aliroot -b <<EOF &> logTrigEffQA.txt
142 ${includeAliroot} ${includeMuon} ${loadAnalysisLibs}
143 .x $qaMacroDir/trigEffQA.C+("${runListName}","${outFileName}");
148 function runTrackQA() {
149 echo "Running tracker QA"
153 lhcPeriod=`echo ${alienBaseDir%"/"} | awk -F "/" ' { print $NF } '`
154 aliroot -b <<EOF &> logTrackQA.txt
155 ${includeAliroot} ${loadAnalysisLibs}
156 .x $qaMacroDir/PlotMuonQA.C+("${terminateDir}",0x0,${inputTriggerList},${physSel},"${lhcPeriod}","${outTaskName}");
162 # Use absolute path for file inputTriggerList
163 if [ "${inputTriggerList}" != "0x0" ]; then
164 inputTriggerDir=`dirname ${inputTriggerList}`
165 if [ "${inputTriggerDir}"="." ]; then
166 inputTriggerList="`pwd`/${inputTriggerList}"
168 inputTriggerList="\"${inputTriggerList}\""
172 if [ $isPrivateProd -eq 1 ]; then
173 tmpName=${qaProdName//"private"/""}
174 if [ "$tmpName" == "$qaProdName" ]; then
175 qaProdName="${qaProdName}_private"
179 if [ $execMerge -eq 1 ]; then
180 mergePerRun $1 $qaProdName $3
182 mergeOut=`grep -A 1 "Output written" ${mergeLog} | grep -v written`
183 mergeOutAll=${mergeOut//".txt"/"_merged.txt"}
185 if [ $execMergeAll -eq 1 ]; then
186 mergeRuns $mergeOut "QAresults_Merged.root"
187 cp -p $mergeOut $mergeOutAll
188 echo "${baseOutDir}/QAresults_Merged.root" >> $mergeOutAll
191 if [ ! -e $mergeOutAll ]; then
192 mergeOutAll=$mergeOut
195 if [ $execTerminate -eq 1 ]; then
196 terminateRuns $mergeOutAll
199 if [ $execTrigQA -eq 1 ]; then
200 # minRun=`echo ${mergeOut} | cut -d "_" -f 2`
201 # maxRun=`echo ${mergeOut} | cut -d "_" -f 3 | cut -d "." -f 1`
202 # trigOutSuffix=`echo ${qaProdName} | awk -F "/" '{ print $NF }'`
203 trigOutSuffix=`echo $3 | awk -F "/" '{ print $NF }'`
204 # outName="trigEffQA_${minRun}_${maxRun}_${trigOutSuffix}.root"
205 outName="trigEffQA_${trigOutSuffix}.root"
207 runTrigQA "${mergeOut}" "${outName}"
210 if [ $execTrackQA -eq 1 ]; then