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