]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/MUON/lite/runQA.sh
electron cut included (Prabhat Ranjan Pujahari <p.pujahari@cern.ch>)
[u/mrichter/AliRoot.git] / PWGPP / MUON / lite / runQA.sh
1 #!/bin/bash
2
3 qaMacroDir="$ALICE_ROOT/PWGPP/MUON/lite"
4
5 baseOutDir=`pwd`
6
7
8 mergeLog="logMerge.txt"
9 mergeOut=""
10 terminateDir="${baseOutDir}/terminateRuns"
11 outTaskName="QAresults.root"
12 mergeFast=0
13
14 execMerge=1
15 execMergeAll=1
16 execTerminate=1
17 execTrigQA=1
18 execTrackQA=1
19 execScalers=1
20 defaultStorage="raw://"
21 isPrivateProd=0
22 optList="ad:efi:kmo:pst"
23 inputTriggerList="0x0"
24 while getopts $optList option
25 do
26   case $option in
27     a ) execMergeAll=0;;
28     d ) defaultStorage=$OPTARG;;
29     e ) execTrigQA=0;;
30     f ) mergeFast=1;;
31     i ) inputTriggerList=$OPTARG;;
32     k ) execTrackQA=0;;
33     m ) execMerge=0;;
34     o ) outTaskName=$OPTARG;;
35     p ) isPrivateProd=1;;
36     s ) execScalers=0;;
37     t ) execTerminate=0;;
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
48     echo "Usage: `basename $0` (-$optList) <runList.txt> <QAx> <alien:///alice/data/20XX/LHCXXy>"
49     echo "       -a skip final merging (default: run)"
50     echo "       -d default storage for scalers (default: ${defaultStorage})"
51     echo "       -e skip run trigger efficiency QA (default: run)"
52     echo "       -f merge fast, skip incomplete prod."
53     echo "       -i input trigger list (default: no list)"
54     echo "       -k skip run muon QA (defult: run)"
55     echo "       -m skip merging (default: run)"
56     echo "       -o task output name (default: QAresults.root)"
57     echo "       -p is private production. Use directory structure of the plugin"
58     echo "       -s skip run scalers trending (default: run)"
59     echo "       -t skip terminate (default: run)"
60     exit 4
61 fi
62
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
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\");"
77 includeAliroot="gSystem->AddIncludePath(\"-I${ALICE_ROOT}/include -I${ALICE_INSTALL}/include\");"
78 includeMuon="gSystem->AddIncludePath(\"-I${ALICE_ROOT}/MUON\");"
79
80
81 function mergePerRun()
82 {
83     echo "Merging each run..."
84     cd $baseOutDir
85
86     aliroot -b <<EOF &> $mergeLog
87 .L $qaMacroDir/mergeGridFiles.C+
88 completeProd("${runListName}","${qaProdName}","${alienBaseDir}","${outTaskName}",50,"MUON_QA MTR_ChamberEffMap MUON.TrigEfficiencyMap MUON.TriggerEfficiencyMap",${mergeFast});
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
100 ${includeAliroot} ${loadAnalysisLibs}
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
118 ${includeAliroot} ${loadAnalysisLibs}
119 .L $qaMacroDir/terminateQA.C+
120 CopyFile("$file","$terminateDir",1,"${outTaskName}")
121 .q 
122 EOF
123         outDir=`grep outDir logCopy.txt | cut -d ":" -f 2 | xargs`
124         #outFile=`grep outFile logCopy.txt | cut -d ":" -f 2`
125         forceTerminate=`grep -c "run number not found" logCopy.txt`
126
127   if [ "`pwd`" != "${outDir}" ]; then
128     mv logCopy.txt $outDir/
129   fi
130
131         cd $outDir
132         #ln -s $qaMacroDir/SetAlienHandler.C
133
134
135         aliroot -b <<EOF &> logTerminate.txt
136 ${includeAliroot} ${loadAnalysisLibs}
137 .x $qaMacroDir/terminateQA.C("${outTaskName}",$forceTerminate)
138 .q
139 EOF
140         #rm logTerminate.txt
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
159 ${includeAliroot} ${includeMuon} ${loadAnalysisLibs}
160 AliLog::SetClassDebugLevel("AliAnalysisTriggerScalers",-1);
161 .x $qaMacroDir/trigEffQA.C+("${runListName}","${outFileName}","${defaultStorage}",${execScalers});
162 .q
163 EOF
164 }
165
166 function runTrackQA() {
167     echo "Running tracker QA"
168     cd $terminateDir
169     physSel="$1"
170     aliroot -b <<EOF &> logTrackQA.txt
171 ${includeAliroot} ${loadAnalysisLibs}
172 .x $qaMacroDir/PlotMuonQA.C+("${terminateDir}",0x0,${inputTriggerList},${physSel},"${outFileSuffix}","${outTaskName}");
173 .q
174 EOF
175     cd $baseOutDir
176 }
177
178 # Use absolute path for file inputTriggerList
179 if [ "${inputTriggerList}" != "0x0" ]; then
180   inputTriggerDir=`dirname ${inputTriggerList}`
181   if [ "${inputTriggerDir}"="." ]; then
182     inputTriggerList="`pwd`/${inputTriggerList}"
183   fi
184   inputTriggerList="\"${inputTriggerList}\""
185 fi
186
187 if [ $execMerge -eq 1 ]; then
188     mergePerRun
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
208     outName="trigEffQA_${outFileSuffix}.root"
209
210     runTrigQA "${mergeOut}" "${outName}"
211 fi
212
213 if [ $execTrackQA -eq 1 ]; then
214     runTrackQA 1
215 fi