# $runNumer e.g. 169123
# $pass e.g. cpass1,pass1,passMC
-runLevelQA()
+runLevelHighPtTreeQA()
{
- qaFile=$1
+ highPtTreeFile=${1}
+
+ #makePlots needs to compile it locally for now
+ cp $ALICE_ROOT/PWGPP/QA/Tracking/ExpertQA/AliHighPtTreeAnalysis.h .
+ cp $ALICE_ROOT/PWGPP/QA/Tracking/ExpertQA/AliHighPtTreeAnalysis.cxx .
+ aliroot -l -b -q "$ALICE_ROOT/PWGPP/QA/Tracking/ExpertQA/makePlots.C(\"$highPtTreeFile\")"
}
periodLevelQA()
{
trendingFile=$1
+ if ls */genericHistos_Bneg.root&>/dev/null; then
+ hadd mergedGenericHistos_Bneg.root */genericHistos_Bneg.root
+ mkdir outputBneg
+ oldDir=${PWD}
+ cd outputBneg
+ mv ${oldDir}/mergedGenericHistos_Bneg.root .
+
+ #makePlots needs to compile it locally for now
+ cp $ALICE_ROOT/PWGPP/QA/Tracking/ExpertQA/AliHighPtTreeAnalysis.h .
+ cp $ALICE_ROOT/PWGPP/QA/Tracking/ExpertQA/AliHighPtTreeAnalysis.cxx .
+
+ aliroot -l -b -q "$ALICE_ROOT/PWGPP/QA/Tracking/ExpertQA/makePeriodPlots.C(\"mergedGenericHistos_Bneg.root\",\"${period}/${pass}\")"
+ cd ${oldDir}
+ fi
+ if ls */genericHistos_Bpos.root&>/dev/null; then
+ hadd mergedGenericHistos_Bpos.root */genericHistos_Bpos.root
+ mkdir outputBpos
+ oldDir=${PWD}
+ cd outputBpos
+
+ #makePlots needs to compile it locally for now
+ cp $ALICE_ROOT/PWGPP/QA/Tracking/ExpertQA/AliHighPtTreeAnalysis.h .
+ cp $ALICE_ROOT/PWGPP/QA/Tracking/ExpertQA/AliHighPtTreeAnalysis.cxx .
+
+ mv ${oldDir}/mergedGenericHistos_Bpos.root .
+ aliroot -l -b -q "$ALICE_ROOT/PWGPP/QA/Tracking/ExpertQA/makePeriodPlots.C(\"mergedGenericHistos_Bpos.root\",\"${period}/${pass}\")"
+ cd ${oldDir}
+ fi
+
+ aliroot -l -b -q "$ALICE_ROOT/PWGPP/QA/Tracking/ExpertQA/makeTrendingPlots.C(\"${trendingFile}\")"
}
unset -f runLevelQA
unset -f periodLevelQA
+ unset -f runLevelHighPtTreeQA
+ unset -f periodLevelHighPtTreeQA
source ${detectorScript}
#################################################################
fi
tmpProductionDir=${tmpPrefix}/${dataType}/${year}/${period}/${pass}
- arrOfTouchedProductions[${tmpProductionDir}]=1
tmpRunDir=${tmpProductionDir}/000${runNumber}
mkdir -p ${tmpRunDir}
cd ${tmpRunDir}
- #handle the case of a zip archive
- [[ "$qaFile" =~ .*.zip$ ]] && qaFile="${qaFile}#QAresults.root"
- [[ "$qaFile" =~ .*.zip$ ]] && highPtTree="${qaFile}#FilterEvents_Trees.root"
-
- echo running ${detector} runLevelQA for run ${runNumber} from ${qaFile}
- runLevelQA ${qaFile} &> runLevelQA.log
+ #by default we expect to have everything in the same archive
+ highPtTree=${qaFile}
+
+ #maybe the input is not an archive, but a file
+ [[ "${qaFile}" =~ "QAresults.root" ]] && highPtTree=""
+ [[ "${qaFile}" =~ "FilterEvents_Trees.root" ]] && qaFile=""
- #perform some default actions:
- #if trending.root not created, create a default one
- if [[ ! -f trending.root ]]; then
- aliroot -b -q -l "$ALICE_ROOT/PWGPP/macros/simpleTrending.C(\"${qaFile}\",${runNumber},\"${detector}\",\"trending.root\",\"trending\",\"recreate\")" &>> runLevelQA.log
+ #it is possible we get the highPt trees from somewhere else
+ #search the list of high pt trees for the proper run number
+ if [[ -n ${inputListHighPtTrees} ]]; then
+ echo "loading the highPtTree from external file ${inputListHighPtTrees}"
+ highPtTree=$(egrep -m1 ${runNumber} ${inputListHighPtTrees})
+ fi
+
+ echo qaFile=$qaFile
+ echo highPtTree=$highPtTree
+
+ #what if we have a zip archive?
+ if [[ "$qaFile" =~ .*.zip$ ]]; then
+ if unzip -l ${qaFile} | egrep "QAresults.root" &>/dev/null; then
+ qaFile="${qaFile}#QAresults.root"
+ else
+ qaFile=""
+ fi
+ fi
+ if [[ "$highPtTree" =~ .*.zip$ ]]; then
+ if unzip -l ${highPtTree} | egrep "FilterEvents_Trees.root" &>/dev/null; then
+ highPtTree="${highPtTree}#FilterEvents_Trees.root"
+ else
+ highPtTree=""
+ fi
fi
+
+ if [[ -n ${qaFile} && $(type -t runLevelQA) =~ "function" ]]; then
+ echo running ${detector} runLevelQA for run ${runNumber} from ${qaFile}
+ runLevelQA "${qaFile}" &> runLevelQA.log
+ #perform some default actions:
+ #if trending.root not created, create a default one
+ if [[ ! -f trending.root ]]; then
+ aliroot -b -q -l "$ALICE_ROOT/PWGPP/macros/simpleTrending.C(\"${qaFile}\",${runNumber},\"${detector}\",\"trending.root\",\"trending\",\"recreate\")" &>> runLevelQA.log
+ fi
+ arrOfTouchedProductions[${tmpProductionDir}]=1
+ fi
+ #expert QA based on high pt trees
+ if [[ -n ${highPtTree} && $(type -t runLevelHighPtTreeQA) =~ "function" ]]; then
+ echo running ${detector} runLevelHighPtTreeQA for run ${runNumber} from ${highPtTree}
+ runLevelHighPtTreeQA "${highPtTree}" &> runLevelHighPtTreeQA.log
+ arrOfTouchedProductions[${tmpProductionDir}]=1
+ fi
+
cd ${tmpDetectorRunDir}
done < ${inputList}
mv -f ${dir} ${productionDir}
done
- echo running ${detector} periodLevelQA for production ${period}/${pass}
rm -f trending.root
#merge trending files if any
if /bin/ls 000*/trending.root &>/dev/null; then
hadd trending.root 000*/trending.root &> periodLevelQA.log
+ fi
+
+ if [[ -f "trending.root" && $(type -t periodLevelQA) =~ "function" ]]; then
+ echo running ${detector} periodLevelQA for production ${period}/${pass}
periodLevelQA trending.root &>> periodLevelQA.log
+ else
+ echo "WARNING: not running ${detector} periodLevelQA for production ${period}/${pass}, no trending.root"
fi
+
if ! validate ${PWD}; then continue; fi
cd ${tmpDetectorRunDir}
'core dumped'
'\.C.*error:.*\.h: No such file'
'segmentation'
+ 'Interpreter error recovered'
)
warningConditions=(