]>
Commit | Line | Data |
---|---|---|
352cd18c | 1 | #!/bin/bash |
2 | ||
3 | qaMacroDir="$ALICE_ROOT/PWG3/muon" | |
4 | ||
5 | baseOutDir=`pwd` | |
6 | ||
7 | ||
8 | mergeLog="logMerge.txt" | |
9 | mergeOut="" | |
10 | terminateDir="${baseOutDir}/terminateRuns" | |
11 | outTaskName="QAresults.root" | |
02f48894 | 12 | mergeFast=0 |
352cd18c | 13 | |
14 | execMerge=1 | |
15 | execMergeAll=1 | |
16 | execTerminate=1 | |
17 | execTrigQA=1 | |
18 | execTrackQA=1 | |
8415c156 | 19 | isPrivateProd=0 |
02f48894 | 20 | optList="mfateko:pi:" |
21 | inputTriggerList="0x0" | |
8415c156 | 22 | while getopts $optList option |
352cd18c | 23 | do |
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 | |
38 | done | |
39 | ||
40 | shift $(($OPTIND - 1)) | |
41 | ||
42 | # needs 3 arguments | |
43 | if [[ $# -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 |
55 | fi | |
56 | ||
57 | loadLibs="gSystem->Load(\"libANALYSIS.so\");gSystem->Load(\"libOADB.so\");gSystem->Load(\"libANALYSISalice.so\");gSystem->Load(\"libCORRFW.so\");gSystem->Load(\"libPWG3base.so\");" | |
58 | ||
59 | function 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 | 68 | completeProd("${runListName}","${prodDir}","${alienBaseDir}","${outTaskName}",50,"MUON_QA MUON.TriggerEfficiencyMap",${mergeFast}); |
352cd18c | 69 | .q |
70 | EOF | |
71 | } | |
72 | ||
73 | function mergeRuns() | |
74 | { | |
75 | echo "Merge all runs" | |
76 | cd $baseOutDir | |
77 | fileListName=$1 | |
78 | outFilename=$2 | |
79 | aliroot -b <<EOF &> logMergeAll.txt | |
80 | ${loadLibs} | |
81 | gSystem->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 | |
84 | EOF | |
85 | ||
86 | } | |
87 | ||
88 | function 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+ | |
100 | CopyFile("$file","$terminateDir",1,"${outTaskName}") | |
101 | .q | |
102 | EOF | |
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 | |
116 | EOF | |
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 | ||
130 | function 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 | |
138 | EOF | |
139 | } | |
140 | ||
141 | function 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 |
151 | EOF | |
152 | cd $baseOutDir | |
153 | } | |
154 | ||
8415c156 | 155 | # Use absolute path for file inputTriggerList |
02f48894 | 156 | if [ "${inputTriggerList}" != "0x0" ]; then |
8415c156 | 157 | inputTriggerDir=`dirname ${inputTriggerList}` |
158 | if [ "${inputTriggerDir}"="." ]; then | |
159 | inputTriggerList="`pwd`/${inputTriggerList}" | |
160 | fi | |
02f48894 | 161 | inputTriggerList="\"${inputTriggerList}\"" |
8415c156 | 162 | fi |
163 | ||
164 | qaProdName="$2" | |
165 | if [ $isPrivateProd -eq 1 ]; then | |
166 | tmpName=${qaProdName//"private"/""} | |
167 | if [ "$tmpName" == "$qaProdName" ]; then | |
168 | qaProdName="${qaProdName}_private" | |
169 | fi | |
170 | fi | |
171 | ||
352cd18c | 172 | if [ $execMerge -eq 1 ]; then |
8415c156 | 173 | mergePerRun $1 $qaProdName $3 |
352cd18c | 174 | fi |
175 | mergeOut=`grep -A 1 "Output written" ${mergeLog} | grep -v written` | |
176 | mergeOutAll=${mergeOut//".txt"/"_merged.txt"} | |
177 | ||
178 | if [ $execMergeAll -eq 1 ]; then | |
179 | mergeRuns $mergeOut "QAresults_Merged.root" | |
180 | cp -p $mergeOut $mergeOutAll | |
181 | echo "${baseOutDir}/QAresults_Merged.root" >> $mergeOutAll | |
182 | fi | |
183 | ||
184 | if [ ! -e $mergeOutAll ]; then | |
185 | mergeOutAll=$mergeOut | |
186 | fi | |
187 | ||
188 | if [ $execTerminate -eq 1 ]; then | |
189 | terminateRuns $mergeOutAll | |
190 | fi | |
191 | ||
192 | if [ $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}" |
201 | fi | |
202 | ||
203 | if [ $execTrackQA -eq 1 ]; then | |
204 | runTrackQA 1 $3 | |
205 | fi |