From de50d76018f9fb0d1d66fb7d7dfbac7836d3da94 Mon Sep 17 00:00:00 2001
From: Aleksandra Poreba <aleksandra.poreba@cern.ch>
Date: Tue, 16 Feb 2021 16:07:25 +0000
Subject: [PATCH] Debug recovery minor updates

---
 .../TrigTransform/python/dbgAnalysis.py               | 11 ++++++++++-
 .../TrigTransform/python/dbgEventInfo.py              |  8 --------
 .../TrigTransform/python/trigRecoExe.py               |  2 +-
 .../test/test_trigP1_v1PhysP1_trfDbgStream_build.py   | 11 ++++++++---
 .../TrigValTools/share/TrigValInputs.json             |  7 +++++++
 5 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/HLT/Trigger/TrigTransforms/TrigTransform/python/dbgAnalysis.py b/HLT/Trigger/TrigTransforms/TrigTransform/python/dbgAnalysis.py
index ab09a8f4cb3..6df90a7aac0 100644
--- a/HLT/Trigger/TrigTransforms/TrigTransform/python/dbgAnalysis.py
+++ b/HLT/Trigger/TrigTransforms/TrigTransform/python/dbgAnalysis.py
@@ -31,7 +31,13 @@ def dbgPreRun(inputFileList, outputFileList, argdict = None):
     outFile = outputFileList[0]
     hfile = TFile(outFile, 'RECREATE')
 
-    # Inicialize dbgEventInfo, this is the main event analysis class
+    maxEvents = argdict.get('maxEvents')
+    maxEvents = maxEvents.value.get('first') if maxEvents else -1
+
+    skipEvents = argdict.get('skipEvents')
+    skipEvents = skipEvents.value.get('first') if skipEvents else 0
+
+    # Initialize dbgEventInfo, this is the main event analysis class
     eventInfo = dbgEventInfo('_Pre', inputFileList.value[0])
     data = []
     l1Info = []
@@ -42,7 +48,10 @@ def dbgPreRun(inputFileList, outputFileList, argdict = None):
         n = 0
         isFirstEvent = True
 
+        bsfile = bsfile[skipEvents:skipEvents+maxEvents] if maxEvents > -1 else bsfile[skipEvents:]
+
         for event in bsfile:
+
             if isFirstEvent:
                 runNumber = event.run_no() if event.run_no() else int(inputFile.split(".")[1])
                 configKeys = getHLTConfigKeys(runNumber, argdict)
diff --git a/HLT/Trigger/TrigTransforms/TrigTransform/python/dbgEventInfo.py b/HLT/Trigger/TrigTransforms/TrigTransform/python/dbgEventInfo.py
index ed1bde846a3..8e9af0e2a5e 100644
--- a/HLT/Trigger/TrigTransforms/TrigTransform/python/dbgEventInfo.py
+++ b/HLT/Trigger/TrigTransforms/TrigTransform/python/dbgEventInfo.py
@@ -22,8 +22,6 @@ class dbgEventInfo:
         self.Stream_Tag_Name                       = 'None'
         self.Stream_Tag_Type                       = 'None'
         self.Lvl1_ID                               = 0
-        self.Event_Counter_Lvl1_ID                 = 0
-        self.Event_Counter_Reset_Counter_Lvl1_ID   = 0
         self.Global_ID                             = 0
         self.Lumiblock                             = 0
         self.Node_ID                               = 0
@@ -293,8 +291,6 @@ class dbgEventInfo:
         self.Event_Info.Stream_Tag_Name        = self.Stream_Tag_Name
         self.Event_Info.Stream_Tag_Type        = self.Stream_Tag_Type
         self.Event_Info.Lvl1_ID                = self.Lvl1_ID
-        self.Event_Info.Event_Counter_Lvl1_ID  = self.Event_Counter_Lvl1_ID
-        self.Event_Info.Event_Counter_Reset_Counter_Lvl1_ID  = self.Event_Counter_Reset_Counter_Lvl1_ID 
         self.Event_Info.Global_ID              = self.Global_ID
         self.Event_Info.Node_ID                = self.Node_ID
         self.Event_Info.Lumiblock              = self.Lumiblock
@@ -320,8 +316,6 @@ class dbgEventInfo:
             Char_t  Stream_Tag_Name[80];\
             Char_t  Stream_Tag_Type[80];\
             UInt_t  Lvl1_ID;\
-            Int_t   Event_Counter_Lvl1_ID;\
-            Int_t   Event_Counter_Reset_Counter_Lvl1_ID;\
             Int_t   Global_ID;\
             Int_t   Lumiblock;\
             Int_t   Node_ID;\
@@ -341,8 +335,6 @@ class dbgEventInfo:
         self.event_info_tree.Branch('Stream_Tag_Name',  addressof(self.Event_Info, 'Stream_Tag_Name'),  'stream_Tag_Name/C')
         self.event_info_tree.Branch('Stream_Tag_Type',  addressof(self.Event_Info, 'Stream_Tag_Type'),  'stream_Tag_Type/C')
         self.event_info_tree.Branch('Lvl1_ID',          addressof(self.Event_Info, 'Lvl1_ID'),          'lvl1_ID/I')
-        self.event_info_tree.Branch('Event_Counter_Lvl1_ID',               addressof(self.Event_Info, 'Event_Counter_Lvl1_ID'),                 'event_Counter_Lvl1_ID/I')
-        self.event_info_tree.Branch('Event_Counter_Reset_Counter_Lvl1_ID', addressof(self.Event_Info, 'Event_Counter_Reset_Counter_Lvl1_ID'),   'event_Counter_Reset_Counter_Lvl1_ID/I')
         self.event_info_tree.Branch('Global_ID',        addressof(self.Event_Info, 'Global_ID'),        'global_ID/I')
         self.event_info_tree.Branch('Lumiblock',        addressof(self.Event_Info, 'Lumiblock'),        'lumiblock/I')
         self.event_info_tree.Branch('Node_ID',          addressof(self.Event_Info, 'Node_ID'),          'node_ID/I')
diff --git a/HLT/Trigger/TrigTransforms/TrigTransform/python/trigRecoExe.py b/HLT/Trigger/TrigTransforms/TrigTransform/python/trigRecoExe.py
index 8525dd0cda4..baac6c242b6 100644
--- a/HLT/Trigger/TrigTransforms/TrigTransform/python/trigRecoExe.py
+++ b/HLT/Trigger/TrigTransforms/TrigTransform/python/trigRecoExe.py
@@ -142,7 +142,7 @@ class trigRecoExecutor(athenaExecutor):
                     msg.info('Will use asetup string for debug stream analysis %s', dbgAsetupString)
 
                 # Set database in command line if it was missing
-                if 'DBserver' not in self.conf.argdict and dbAlias:
+                if 'useDB' in self.conf.argdict and 'DBserver' not in self.conf.argdict and dbAlias:
                     msg.warn("Database alias will be set to %s", dbAlias)
                     self._cmd.append("--db-server " + dbAlias)
             else:
diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_v1PhysP1_trfDbgStream_build.py b/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_v1PhysP1_trfDbgStream_build.py
index fa2a443580c..7d92cf50c7a 100755
--- a/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_v1PhysP1_trfDbgStream_build.py
+++ b/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_v1PhysP1_trfDbgStream_build.py
@@ -1,12 +1,13 @@
 #!/usr/bin/env python
 # Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
 
-# art-description: transform test of BSRDOtoRAW (including debug recovery) , using v1PhysP1 menu
+# art-description: perform debug recovery from PU crash, using v1PhysP1 menule
 # art-type: build
 # art-include: master/Athena
 
 from TrigValTools.TrigValSteering import Test, ExecStep, CheckSteps
 
+
 #====================================================================================================
 # HLT BS_RDO->RAW
 hlt = ExecStep.ExecStep('BSRDOtoRAW')
@@ -16,11 +17,12 @@ hlt.threads = 1
 hlt.concurrent_events = 1
 hlt.max_events = -1 # Debug recovery does not handle maxEvents/skipEvents flag
 hlt.args  = '--precommand=\\\"setMenu=\\\'PhysicsP1_pp_run3_v1\\\'\\\"'
+hlt.args += ' --maxEvents=50'
 hlt.args += ' --streamSelection=All'
 hlt.args += ' --prodSysBSRDO True'
 hlt.args += ' --outputBSFile=RAW.pool.root'
 hlt.args += ' --outputHIST_DEBUGSTREAMMONFile=HIST_DEBUGSTREAMMON.testing.data' # Turn on debug recovery step
-hlt.input = 'data_run3'
+hlt.input = 'data_dbg_stream'
 
 
 #====================================================================================================
@@ -33,8 +35,11 @@ test.check_steps = CheckSteps.default_check_steps(test)
 # Overwrite default MessageCount settings
 msgcount = test.get_step("MessageCount")
 msgcount.thresholds = {
-   'INFO': 300
+   'INFO': 300,
+   'WARNING': 3, # LBAvInstLumi is zero or negative in updatePerBunchLumi() - the file is from TR so lumi = 0
+   'other': 10
 }
+
 msgcount.required = True
 
 test.check_steps.remove(test.get_step("ZeroCounts"))
diff --git a/Trigger/TrigValidation/TrigValTools/share/TrigValInputs.json b/Trigger/TrigValidation/TrigValTools/share/TrigValInputs.json
index 15fb0abc352..c5f1307d05d 100644
--- a/Trigger/TrigValidation/TrigValTools/share/TrigValInputs.json
+++ b/Trigger/TrigValidation/TrigValTools/share/TrigValInputs.json
@@ -27,6 +27,13 @@
             "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data_test.00386211.physics_Main.daq.RAW._lb0003._SFO-5._0001.data"
         ]
     },
+    "data_dbg_stream": {
+        "source": "data",
+        "format": "BS",
+        "paths": [
+            "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data_test.00388197.debug_PUCrash.daq.RAW._lb0000._SFO-1._0001.data"
+        ]
+    },
     "data_cos": {
         "source": "data",
         "format": "BS",
-- 
GitLab