processing of event_stat_outer.root
authormkrzewic <mikolaj.krzewicki@cern.ch>
Fri, 7 Nov 2014 08:22:59 +0000 (09:22 +0100)
committermkrzewic <mikolaj.krzewicki@cern.ch>
Fri, 7 Nov 2014 08:22:59 +0000 (09:22 +0100)
example updated as well

PWGPP/QA/detectorQAscripts/EXAMPLE.sh.template
PWGPP/QA/scripts/runQA.sh

index c53fe24..8be6fe4 100755 (executable)
@@ -5,22 +5,23 @@
 # ideally for each run a trending.root file is created - it is then automatically merged
 # and offered as input to the per-period trending function, see below.
 # 
-# available variables:
-#  $qaFile         e.g. /path/QA_merge_archive.zip#QAresults.root
-#  $qaFileOuter    e.g. /path/QA_merge_archive.zip#QAresults_outer.root
-#  $highPtTree     e.g. /path/Filter_trees.root
-#  $eventStatFile  e.g. /path/event_stat.root
+# available variables (can be used in all functions):
+#  $qaFile              e.g. /path/QA_merge_archive.zip#QAresults.root
+#  $qaFileOuter         e.g. /path/QA_merge_archive.zip#QAresults_outer.root
+#  $highPtTree          e.g. /path/Filter_trees.root
+#  $eventStatFile       e.g. /path/event_stat.root
+#  $eventStatFileOuter  e.g. /path/event_stat_outer.root
 #
-#  $dataType       e.g. data or sim
-#  $year           e.g. 2011
-#  $period         e.g. LHC13g
-#  $runNumber      e.g. 169123
-#  $pass           e.g. cpass1,pass1,passMC
-#  $ocdbStorage    e.g. "raw://", "local://./OCDB"
+#  $dataType            e.g. data or sim
+#  $year                e.g. 2011
+#  $period              e.g. LHC13g
+#  $runNumber           e.g. 169123
+#  $pass                e.g. cpass1,pass1,passMC
+#  $ocdbStorage         e.g. "raw://", "local://./OCDB"
 
 runLevelQA()
 {
-  #full path of QAresults.root is provided
+  #full path of QAresults.root is provided:
   qaFile=$1
 
   #aliroot....
@@ -31,7 +32,8 @@ runLevelQA()
 
 periodLevelQA()
 {
-  #path of the merged period trending.root is provided
+  #per-run trending is merged by the framework,
+  #path of the merged trending.root is provided:
   trendingFile=$1 
 
   #merged trending file in fact present in current dir
@@ -46,7 +48,7 @@ periodLevelQA()
 #########EXPERTS ONLY####################################
 runLevelHighPtTreeQA()
 {
-  #input is the high pt tree (if available)
+  #input is the high pt tree file (if available)
   highPtTree=$1
 }
 
@@ -61,3 +63,9 @@ runLevelQAouter()
   #input is the QAresults_outer.root (if available)
   qaFileOuter=$1
 }
+
+runLevelEventStatQAouter()
+{
+  #input is the event_stat_outer.root file (if available)
+  eventStatFileOuter=$1
+}
index 8d9d279..7180ff0 100755 (executable)
@@ -167,6 +167,7 @@ updateQA()
       qaFileOuter=""
       highPtTree=""
       eventStatFile=""
+      eventStatFileOuter=""
       #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
@@ -179,11 +180,13 @@ updateQA()
       [[ "${inputFile}" =~ QAresults_outer.root$ ]] && qaFileOuter=${inputFile}
       [[ "${inputFile}" =~ FilterEvents_Trees.root$ ]] && highPtTree=${inputFile}
       [[ "${inputFile}" =~ event_stat.root$ ]] && eventStatFile=${inputFile}
+      [[ "${inputFile}" =~ event_stat_outer.root$ ]] && eventStatFileOuter=${inputFile}
       if [[ "${inputFile}" =~ \.zip$ ]]; then
         [[ -z ${qaFile} ]] && qaFile=${inputFile}
         [[ -z ${qaFileOuter} ]] && qaFileOuter=${inputFile}
         [[ -z ${highPtTree} ]] && highPtTree=${inputFile}
         [[ -z ${eventStatFile} ]] && eventStatFile=${inputFile}
+        [[ -z ${eventStatFileOuter} ]] && eventStatFileOuter=${inputFile}
       fi
 
       #if we have zip archives in the input, extract the proper file name
@@ -220,11 +223,19 @@ updateQA()
           eventStatFile=""
         fi
       fi
+      if [[ "${eventStatFileOuter}" =~ .*.zip$ ]]; then
+        if unzip -l ${eventStatFileOuter} | egrep "event_stat_outer.root" &>/dev/null; then
+          eventStatFileOuter+="#event_stat.root"
+        else
+          eventStatFileOuter=""
+        fi
+      fi
      
       echo qaFile=$qaFile
       echo qaFileOuter=$qaFileOuter
       echo highPtTree=$highPtTree
       echo eventStatFile=$eventStatFile
+      echo eventStatFileOuter=$eventStatFileOuter
       echo ocdbStorage=${ocdbStorage}
       echo
 
@@ -256,6 +267,13 @@ updateQA()
         #cache the touched production + an example file to guarantee consistent run data parsing
         arrOfTouchedProductions[${tmpProductionDir}]="${inputFile%\#*}"
       fi
+      #event stat QA based on event_stat_outer.root file
+      if [[ -n ${eventStatFileOuter} && $(type -t runLevelEventStatQAouter) =~ "function" ]]; then
+        echo running ${detector} runLevelEventStatQAouter for run ${runNumber} from ${eventStatFileOuter}
+        ( runLevelEventStatQAouter "${eventStatFileOuter}" ) &>> runLevelQA.log
+        #cache the touched production + an example file to guarantee consistent run data parsing
+        arrOfTouchedProductions[${tmpProductionDir}]="${inputFile%\#*}"
+      fi
 
       #perform some default actions:
       #if trending.root not created, create a default one