From 51fd3eb2c1d13b1457c2c59a99790ed9bb9cde1a Mon Sep 17 00:00:00 2001
From: Peter Onyisi <ponyisi@utexas.edu>
Date: Mon, 2 Nov 2020 18:16:38 +0000
Subject: [PATCH] Add DecorHandles to steer DQ algs & other RAWtoALL fixes

---
 .../AthenaMonitoring/src/DQEventFlagFilterTool.cxx   |  3 ++-
 Control/AthenaMonitoring/src/DQEventFlagFilterTool.h |  3 ++-
 .../DataQualityTools/DQTBackgroundMon.h              |  7 ++++++-
 .../DataQualityTools/DQTDataFlowMonAlg.h             |  7 ++++++-
 .../DataQualityTools/src/DQTBackgroundMon.cxx        |  3 ++-
 .../DataQualityTools/src/DQTDataFlowMonAlg.cxx       |  7 +++++++
 .../python/Run3AFPExampleMonitorAlgorithm.py         |  4 ++++
 .../python/TRTMonitoringRun3ESD_Alg.py               |  9 +++++----
 .../SiSPSeededTrackFinder/SiSPSeededTrackFinder.h    |  2 ++
 .../src/SiSPSeededTrackFinder.cxx                    |  1 +
 .../LArCellRec/python/LArCollisionTimeConfig.py      |  8 +++++---
 .../LArCellRec/src/LArCollisionTimeAlg.cxx           |  4 +---
 LArCalorimeter/LArCellRec/src/LArCollisionTimeAlg.h  |  8 ++++----
 .../LArConfiguration/python/LArMonitoringConfig.py   | 12 ++++++------
 .../LArMonitoring/python/LArCollisionTimeMonAlg.py   |  3 +--
 .../LArMonitoring/python/LArReco_fromraw_Cfg.py      |  3 +--
 .../python/TgcRawDataMonitorAlgorithm.py             |  6 ++++--
 .../RecBackgroundAlgs/BackgroundWordFiller.h         |  7 ++++++-
 .../RecBackgroundAlgs/src/BackgroundWordFiller.cxx   |  3 ++-
 .../src/MonitorElectronAlgorithm.cxx                 |  1 +
 .../egammaPerformance/src/MonitorElectronAlgorithm.h |  1 +
 .../egammaPerformance/src/MonitorPhotonAlgorithm.cxx |  1 +
 .../egammaPerformance/src/MonitorPhotonAlgorithm.h   |  1 +
 .../src/TileDQFragMonitorAlgorithm.cxx               |  3 ++-
 .../TileMonitoring/src/TileDQFragMonitorAlgorithm.h  |  4 ++++
 .../TileRecAlgs/src/MBTSTimeDiffEventInfoAlg.cxx     |  3 ++-
 .../TileRecAlgs/src/MBTSTimeDiffEventInfoAlg.h       |  3 ++-
 .../TileRecUtils/TileRecUtils/TileCellBuilder.h      |  6 +++++-
 TileCalorimeter/TileRecUtils/src/TileCellBuilder.cxx |  3 ++-
 29 files changed, 88 insertions(+), 38 deletions(-)

diff --git a/Control/AthenaMonitoring/src/DQEventFlagFilterTool.cxx b/Control/AthenaMonitoring/src/DQEventFlagFilterTool.cxx
index 1a0efb76407..3ca699460e7 100644
--- a/Control/AthenaMonitoring/src/DQEventFlagFilterTool.cxx
+++ b/Control/AthenaMonitoring/src/DQEventFlagFilterTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "DQEventFlagFilterTool.h"
@@ -18,6 +18,7 @@ StatusCode DQEventFlagFilterTool::initialize()
   ATH_MSG_VERBOSE("ATLAS Ready initialize");
   // don't register callback if we always return true anyway
   ATH_CHECK( m_EventInfoKey.initialize(!m_alwaysReturnTrue) );
+  ATH_CHECK( m_TileStatusKey.initialize(!m_alwaysReturnTrue) );
   return StatusCode::SUCCESS;
 }
 
diff --git a/Control/AthenaMonitoring/src/DQEventFlagFilterTool.h b/Control/AthenaMonitoring/src/DQEventFlagFilterTool.h
index 2fac590257c..deeed055ca9 100644
--- a/Control/AthenaMonitoring/src/DQEventFlagFilterTool.h
+++ b/Control/AthenaMonitoring/src/DQEventFlagFilterTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef DQEVENTFLAGFILTERTOOL_H
@@ -32,6 +32,7 @@ class DQEventFlagFilterTool :  public AthAlgTool, virtual public IDQFilterTool
   Gaudi::Property<bool> m_doSCT{this, "doSCT", true};
   Gaudi::Property<bool> m_doCore{this, "doCore", true};
   SG::ReadHandleKey<xAOD::EventInfo> m_EventInfoKey{this, "EventInfoKey", "EventInfo"};
+  SG::ReadDecorHandleKey<xAOD::EventInfo> m_TileStatusKey{this, "TileStatusKey", "EventInfo.TileStatus"};
 };
 
 #endif //DQEVENTFLAGFILTERTOOL_H
diff --git a/DataQuality/DataQualityTools/DataQualityTools/DQTBackgroundMon.h b/DataQuality/DataQualityTools/DataQualityTools/DQTBackgroundMon.h
index 4f1118dfa66..a3e179ccf58 100644
--- a/DataQuality/DataQualityTools/DataQualityTools/DQTBackgroundMon.h
+++ b/DataQuality/DataQualityTools/DataQualityTools/DQTBackgroundMon.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
@@ -44,6 +44,11 @@ private:
     RHK<Trk::SegmentCollection> m_SegmentCollectionKey {this, "MuonSegmentsKey", "MuonSegments", ""};
     RHK<BeamBackgroundData> m_BeamBackgroundDataKey {this, "BeamBackgroundDataKey", "BeamBackgroundData", ""};
     RHK<xAOD::VertexContainer> m_VertexContainerKey {this, "PrimaryVerticesKey", "PrimaryVertices", ""};
+    SG::ReadDecorHandleKey<xAOD::EventInfo> m_eventInfoDecorKey{this,"eventInfoDecorKey",
+                                                               "EventInfo.backgroundWord",
+                                                               "Key to enforce scheduling"};
+    // we dp not need a decorhandle key for the MBTS background because we already depend on MBTSCollisionTime
+
 
     // For parsing the int returned by TrigDecTool's getBGCode()
     GP<int> m_filledBG {this, "FilledBGIndex", 1};
diff --git a/DataQuality/DataQualityTools/DataQualityTools/DQTDataFlowMonAlg.h b/DataQuality/DataQualityTools/DataQualityTools/DQTDataFlowMonAlg.h
index 06cef9ce523..50901fd5951 100644
--- a/DataQuality/DataQualityTools/DataQualityTools/DQTDataFlowMonAlg.h
+++ b/DataQuality/DataQualityTools/DataQualityTools/DQTDataFlowMonAlg.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // ********************************************************************
@@ -25,8 +25,13 @@ class DQTDataFlowMonAlg: public AthMonitorAlgorithm
 
   virtual ~DQTDataFlowMonAlg() {};
 
+  virtual StatusCode initialize() override;
+
   virtual StatusCode fillHistograms( const EventContext& ctx ) const override;
 
+ private:
+    SG::ReadDecorHandleKey<xAOD::EventInfo> m_TileStatusKey{this, "TileStatusKey", "EventInfo.TileStatus"};
+
 };
 
 #endif
diff --git a/DataQuality/DataQualityTools/src/DQTBackgroundMon.cxx b/DataQuality/DataQualityTools/src/DQTBackgroundMon.cxx
index 3d0489a1dad..1c17221900d 100644
--- a/DataQuality/DataQualityTools/src/DQTBackgroundMon.cxx
+++ b/DataQuality/DataQualityTools/src/DQTBackgroundMon.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "DataQualityTools/DQTBackgroundMon.h"
@@ -18,6 +18,7 @@ StatusCode DQTBackgroundMon::initialize() {
     ATH_CHECK( m_LUCID_RawDataContainerKey.initialize() );
     ATH_CHECK( m_BeamBackgroundDataKey.initialize() );
     ATH_CHECK( m_VertexContainerKey.initialize() );
+    ATH_CHECK( m_eventInfoDecorKey.initialize() );
 
     return AthMonitorAlgorithm::initialize();
 }
diff --git a/DataQuality/DataQualityTools/src/DQTDataFlowMonAlg.cxx b/DataQuality/DataQualityTools/src/DQTDataFlowMonAlg.cxx
index a73005be38d..566b793d704 100644
--- a/DataQuality/DataQualityTools/src/DQTDataFlowMonAlg.cxx
+++ b/DataQuality/DataQualityTools/src/DQTDataFlowMonAlg.cxx
@@ -21,6 +21,13 @@ DQTDataFlowMonAlg::DQTDataFlowMonAlg( const std::string& name,
 {
 }
 
+StatusCode
+DQTDataFlowMonAlg::initialize()
+{
+  ATH_CHECK(AthMonitorAlgorithm::initialize());
+  ATH_CHECK(m_TileStatusKey.initialize());
+  return StatusCode::SUCCESS;
+}
 
 StatusCode 
 DQTDataFlowMonAlg::fillHistograms( const EventContext& ctx ) const
diff --git a/ForwardDetectors/AFP/Run3AFPMonitoring/python/Run3AFPExampleMonitorAlgorithm.py b/ForwardDetectors/AFP/Run3AFPMonitoring/python/Run3AFPExampleMonitorAlgorithm.py
index 5a1c07c50c2..3c7d444ffb6 100644
--- a/ForwardDetectors/AFP/Run3AFPMonitoring/python/Run3AFPExampleMonitorAlgorithm.py
+++ b/ForwardDetectors/AFP/Run3AFPMonitoring/python/Run3AFPExampleMonitorAlgorithm.py
@@ -12,6 +12,10 @@ def Run3AFPExampleMonitoringConfig(inputFlags):
     from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
     result = ComponentAccumulator()
 
+    # don't run in RAWtoESD
+    if inputFlags.DQ.Environment in ('tier0Raw',):
+        return result
+
     from LumiBlockComps.BunchCrossingCondAlgConfig import BunchCrossingCondAlgCfg
     result.merge(BunchCrossingCondAlgCfg(inputFlags))
     
diff --git a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3ESD_Alg.py b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3ESD_Alg.py
index 0a9c0ae2892..eb82fe897f1 100644
--- a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3ESD_Alg.py
+++ b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3ESD_Alg.py
@@ -16,10 +16,6 @@ def TRTMonitoringRun3ESD_AlgConfig(inputFlags):
     from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
     result = ComponentAccumulator()
 
-    from TrkConfig.TrackCollectionReadConfig import TrackCollectionReadCfg
-    result.merge (TrackCollectionReadCfg (inputFlags, 'CombinedInDetTracks'))
-    result.merge (TrackCollectionReadCfg (inputFlags, 'Tracks'))
-
     from AthenaMonitoring import AthMonitorCfgHelper
     helper = AthMonitorCfgHelper(inputFlags, 'TRTMonitoringCfg')
 
@@ -221,6 +217,11 @@ if __name__ == '__main__':
     geoCfg = AtlasGeometryCfg(ConfigFlags)
     cfg.merge(geoCfg)
 
+    # Force special handling of converters
+    from TrkConfig.TrackCollectionReadConfig import TrackCollectionReadCfg
+    cfg.merge (TrackCollectionReadCfg (ConfigFlags, 'CombinedInDetTracks'))
+    cfg.merge (TrackCollectionReadCfg (ConfigFlags, 'Tracks'))
+
     TRTMonitoringRun3Acc = TRTMonitoringRun3ESD_AlgConfig(ConfigFlags)
     ServiceMgr.Dump = False
 
diff --git a/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/SiSPSeededTrackFinder/SiSPSeededTrackFinder.h b/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/SiSPSeededTrackFinder/SiSPSeededTrackFinder.h
index 1524a165a3d..a19cc99c685 100644
--- a/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/SiSPSeededTrackFinder/SiSPSeededTrackFinder.h
+++ b/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/SiSPSeededTrackFinder/SiSPSeededTrackFinder.h
@@ -120,6 +120,8 @@ namespace InDet {
 
     SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey{this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"};
 
+    SG::ReadDecorHandleKey<xAOD::EventInfo> m_mbtsKey{this, "MBTSKey", "EventInfo.MBTSBackground"};
+
     SG::WriteHandleKey<TrackCollection> m_outputTracksKey{this, "TracksLocation", "SiSPSeededTracks"};
     //@}
 
diff --git a/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/src/SiSPSeededTrackFinder.cxx b/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/src/SiSPSeededTrackFinder.cxx
index d74fa67cbe4..c608055d1ec 100644
--- a/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/src/SiSPSeededTrackFinder.cxx
+++ b/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/src/SiSPSeededTrackFinder.cxx
@@ -28,6 +28,7 @@ InDet::SiSPSeededTrackFinder::SiSPSeededTrackFinder
 StatusCode InDet::SiSPSeededTrackFinder::initialize() 
 {
   ATH_CHECK(m_evtKey.initialize());
+  ATH_CHECK(m_mbtsKey.initialize(m_useMBTS));
   if (not m_SpacePointsPixelKey.empty()) {
     ATH_CHECK(m_SpacePointsPixelKey.initialize());
   }
diff --git a/LArCalorimeter/LArCellRec/python/LArCollisionTimeConfig.py b/LArCalorimeter/LArCellRec/python/LArCollisionTimeConfig.py
index 7f981afa827..b78b5eb870c 100644
--- a/LArCalorimeter/LArCellRec/python/LArCollisionTimeConfig.py
+++ b/LArCalorimeter/LArCellRec/python/LArCollisionTimeConfig.py
@@ -1,16 +1,18 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 # python fragment to configure LAr collision time algo
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 
-def LArCollisionTimeCfg(configFlags):
+def LArCollisionTimeCfg(configFlags, cutIteration=False):
 
    result=ComponentAccumulator()
 
    LArCollisionTimeAlg=CompFactory.LArCollisionTimeAlg
-   result.addEventAlgo(LArCollisionTimeAlg("LArCollisionTimeAlg", isMC=configFlags.Input.isMC))
+   result.addEventAlgo(LArCollisionTimeAlg("LArCollisionTimeAlg", 
+                       isMC=configFlags.Input.isMC,
+                       cutIteration=cutIteration))
 
    return result   
 
diff --git a/LArCalorimeter/LArCellRec/src/LArCollisionTimeAlg.cxx b/LArCalorimeter/LArCellRec/src/LArCollisionTimeAlg.cxx
index 57941f2f7a6..d15e9b4625d 100644
--- a/LArCalorimeter/LArCellRec/src/LArCollisionTimeAlg.cxx
+++ b/LArCalorimeter/LArCellRec/src/LArCollisionTimeAlg.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "LArCollisionTimeAlg.h"
@@ -12,8 +12,6 @@ LArCollisionTimeAlg:: LArCollisionTimeAlg(const std::string& name, ISvcLocator*
     AthAlgorithm(name,pSvcLocator),
     m_calo_id(nullptr)
   {
-    declareProperty("cellContainerName", m_cellsContName="AllCalo" );
-    declareProperty("collisionTime", m_collTimeName="LArCollisionTime" );
   }
   
 //__________________________________________________________________________
diff --git a/LArCalorimeter/LArCellRec/src/LArCollisionTimeAlg.h b/LArCalorimeter/LArCellRec/src/LArCollisionTimeAlg.h
index b6210ae4539..518078efe52 100644
--- a/LArCalorimeter/LArCellRec/src/LArCollisionTimeAlg.h
+++ b/LArCalorimeter/LArCellRec/src/LArCollisionTimeAlg.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // TheLArCollisionsAlg.h
@@ -46,13 +46,13 @@ class LArCollisionTimeAlg : public AthAlgorithm {
   // Properties
   // --------------------------------------------------
   Gaudi::Property<bool>  m_isMC     { this, "isMC", false, "Are we working with simu?" };
-  Gaudi::Property<bool>  m_iterCut  { this, "cutIteration", true, "cut on OFC iteration, will not work for Online" };
+  Gaudi::Property<bool>  m_iterCut  { this, "cutIteration", false, "cut on OFC iteration, will not work for Online" };
   Gaudi::Property<float> m_timeCut  { this, "timeDiffCut", 5., "|A-C| time < timeDiffCut to pass the filter" };
   Gaudi::Property<int>   m_minCells { this, "nCells", 2, "min. number of cells per endcap to pass the filter" };
 
 
-  SG::ReadHandleKey<CaloCellContainer> m_cellsContName;
-  SG::WriteHandleKey<LArCollisionTime> m_collTimeName;
+  SG::ReadHandleKey<CaloCellContainer> m_cellsContName{this,"cellContainerName","AllCalo"};
+  SG::WriteHandleKey<LArCollisionTime> m_collTimeName{this,"collisionTime","LArCollisionTime"};
   SG::ReadCondHandleKey<CaloNoise> m_noiseCDOKey{this,"CaloNoiseKey","totalNoise","SG Key of CaloNoise data object"};
 
 };
diff --git a/LArCalorimeter/LArConfiguration/python/LArMonitoringConfig.py b/LArCalorimeter/LArConfiguration/python/LArMonitoringConfig.py
index d5c8d636413..29830d97444 100644
--- a/LArCalorimeter/LArConfiguration/python/LArMonitoringConfig.py
+++ b/LArCalorimeter/LArConfiguration/python/LArMonitoringConfig.py
@@ -18,18 +18,18 @@ def LArMonitoringConfig(inputFlags):
     from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
     acc = ComponentAccumulator()
     
-    if not inputFlags.Input.isMC:
-         acc.merge(LArAffectedRegionsConfig(inputFlags))
-         acc.merge(LArNoisyROMonConfig(inputFlags))
-         if 'online' not in inputFlags.DQ.Environment:
-            acc.merge(LArHVCorrMonConfig(inputFlags))
-
     # algos which can run in ESD but not AOD:
     if inputFlags.DQ.Environment != 'AOD':
         if inputFlags.DQ.DataType != 'cosmics':
             from LumiBlockComps.BunchCrossingCondAlgConfig import BunchCrossingCondAlgCfg
             acc.merge(BunchCrossingCondAlgCfg(inputFlags))
             acc.merge(LArCollisionTimeMonConfig(inputFlags))
+        if not inputFlags.Input.isMC:
+            acc.merge(LArNoisyROMonConfig(inputFlags))
+            acc.merge(LArAffectedRegionsConfig(inputFlags))
+            if 'online' not in inputFlags.DQ.Environment:
+                acc.merge(LArHVCorrMonConfig(inputFlags))
+
 
     # and others on RAW data only
     if inputFlags.DQ.Environment in ('online', 'tier0', 'tier0Raw'):
diff --git a/LArCalorimeter/LArMonitoring/python/LArCollisionTimeMonAlg.py b/LArCalorimeter/LArMonitoring/python/LArCollisionTimeMonAlg.py
index 432bee17c98..88eb02c0a98 100644
--- a/LArCalorimeter/LArMonitoring/python/LArCollisionTimeMonAlg.py
+++ b/LArCalorimeter/LArMonitoring/python/LArCollisionTimeMonAlg.py
@@ -269,8 +269,7 @@ if __name__=='__main__':
 
     # try collision time algo 
     from LArCellRec.LArCollisionTimeConfig import LArCollisionTimeCfg
-    cfg.merge(LArCollisionTimeCfg(ConfigFlags))
-    cfg.getEventAlgo("LArCollisionTimeAlg").cutIteration=False
+    cfg.merge(LArCollisionTimeCfg(ConfigFlags, cutIteration=False))
     # add cluster collision time algo
     # cluster config is still missing
     #from LArClusterRec.LArClusterSwConfig import LArClusterSwConfig
diff --git a/LArCalorimeter/LArMonitoring/python/LArReco_fromraw_Cfg.py b/LArCalorimeter/LArMonitoring/python/LArReco_fromraw_Cfg.py
index 8a2b376c7a6..9e7110b92ca 100644
--- a/LArCalorimeter/LArMonitoring/python/LArReco_fromraw_Cfg.py
+++ b/LArCalorimeter/LArMonitoring/python/LArReco_fromraw_Cfg.py
@@ -38,8 +38,7 @@ if __name__=="__main__":
 
    #collision time algo 
    from LArCellRec.LArCollisionTimeConfig import LArCollisionTimeCfg
-   cfg.merge(LArCollisionTimeCfg(ConfigFlags))
-   cfg.getEventAlgo("LArCollisionTimeAlg").cutIteration=False
+   cfg.merge(LArCollisionTimeCfg(ConfigFlags, cutIteration=False))
 
    # and collision time monitoring algo
    from LArMonitoring.LArCollisionTimeMonAlg import LArCollisionTimeMonConfig
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/TgcRawDataMonitoring/python/TgcRawDataMonitorAlgorithm.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/TgcRawDataMonitoring/python/TgcRawDataMonitorAlgorithm.py
index 617f0a5b3c9..6fbcd4d033b 100644
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/TgcRawDataMonitoring/python/TgcRawDataMonitorAlgorithm.py
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/TgcRawDataMonitoring/python/TgcRawDataMonitorAlgorithm.py
@@ -37,9 +37,11 @@ def TgcRawDataMonitoringConfig(inputFlags):
     if not inputFlags.DQ.triggerDataAvailable:
         tgcRawDataMonAlg.MuonRoIContainerName = ''
 
-    if 'HLT_xAOD__MuonContainer_MuonEFInfo' in inputFlags.Input.Collections:
+    isBS = (inputFlags.Input.Format == 'BS')
+    # if input is raw data, objects won't be in input collections
+    if (isBS and inputFlags.DQ.triggerDataAvailable) or 'HLT_xAOD__MuonContainer_MuonEFInfo' in inputFlags.Input.Collections:
         tgcRawDataMonAlg.MuonEFContainerName='HLT_xAOD__MuonContainer_MuonEFInfo'
-    if 'TGC_MeasurementsAllBCs' in inputFlags.Input.Collections:
+    if isBS or 'TGC_MeasurementsAllBCs' in inputFlags.Input.Collections:
         tgcRawDataMonAlg.AnaTgcPrd=True
     
     mainDir = 'Muon/MuonRawDataMonitoring/TGC/'
diff --git a/Reconstruction/RecBackground/RecBackgroundAlgs/RecBackgroundAlgs/BackgroundWordFiller.h b/Reconstruction/RecBackground/RecBackgroundAlgs/RecBackgroundAlgs/BackgroundWordFiller.h
index fa61a22807f..7bd7d5da406 100644
--- a/Reconstruction/RecBackground/RecBackgroundAlgs/RecBackgroundAlgs/BackgroundWordFiller.h
+++ b/Reconstruction/RecBackground/RecBackgroundAlgs/RecBackgroundAlgs/BackgroundWordFiller.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 /* Algorihtm to fill the background word that is stored in the EventInfo 
@@ -58,6 +58,11 @@ class BackgroundWordFiller : public AthAlgorithm
   /** ReadHandleKey for LArCollisionTime */
   SG::ReadHandleKey<LArCollisionTime> m_lArCollisionTimeKey{this,"LArCollisionTimeKey","LArCollisionTime","Key for LArCollisionTime"};
 
+  /** WriteDecorHandleKey: needed for scheduling downstream clients */
+  SG::WriteDecorHandleKey<xAOD::EventInfo> m_eventInfoDecorKey{this,"eventInfoDecorKey",
+                                                               "EventInfo.backgroundWord",
+                                                               "Decoration key for downstream clients"};
+
   Gaudi::Property<bool> m_isMC{this, "IsMC", false, "Sets whether we should expect MC objects"};
   
   int m_HaloNumSegment_Cut;
diff --git a/Reconstruction/RecBackground/RecBackgroundAlgs/src/BackgroundWordFiller.cxx b/Reconstruction/RecBackground/RecBackgroundAlgs/src/BackgroundWordFiller.cxx
index 52e545b4d2d..b3f5ec723f5 100644
--- a/Reconstruction/RecBackground/RecBackgroundAlgs/src/BackgroundWordFiller.cxx
+++ b/Reconstruction/RecBackground/RecBackgroundAlgs/src/BackgroundWordFiller.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 /* Algorihtm to fill the background word that is stored in the EventInfo 
@@ -139,6 +139,7 @@ StatusCode BackgroundWordFiller::initialize() {
   ATH_CHECK(m_rawInfoSummaryForTagKey.initialize(!m_isMC));
   ATH_CHECK(m_tileCellContainerKey.initialize());
   ATH_CHECK(m_lArCollisionTimeKey.initialize(!m_isMC));
+  ATH_CHECK(m_eventInfoDecorKey.initialize());
   
   return StatusCode::SUCCESS;  
 }
diff --git a/Reconstruction/egamma/egammaPerformance/src/MonitorElectronAlgorithm.cxx b/Reconstruction/egamma/egammaPerformance/src/MonitorElectronAlgorithm.cxx
index 4f7d23655bd..3f272c68cce 100755
--- a/Reconstruction/egamma/egammaPerformance/src/MonitorElectronAlgorithm.cxx
+++ b/Reconstruction/egamma/egammaPerformance/src/MonitorElectronAlgorithm.cxx
@@ -19,6 +19,7 @@ StatusCode MonitorElectronAlgorithm::initialize() {
     using namespace Monitored;
     ATH_CHECK( AthMonitorAlgorithm::initialize() );
     ATH_CHECK( m_ParticleContainerKey.initialize() );
+    ATH_CHECK( m_ElectronIsolationKey.initialize() );
     return StatusCode::SUCCESS;
 }
 
diff --git a/Reconstruction/egamma/egammaPerformance/src/MonitorElectronAlgorithm.h b/Reconstruction/egamma/egammaPerformance/src/MonitorElectronAlgorithm.h
index 356f5a99f3b..a54d5843a5b 100755
--- a/Reconstruction/egamma/egammaPerformance/src/MonitorElectronAlgorithm.h
+++ b/Reconstruction/egamma/egammaPerformance/src/MonitorElectronAlgorithm.h
@@ -30,6 +30,7 @@ public:
 private:
 
   SG::ReadHandleKey<xAOD::ElectronContainer> m_ParticleContainerKey {this, "ParticleContainerName", "Electrons", "Name of electron container" };
+  SG::ReadDecorHandleKey<xAOD::ElectronContainer> m_ElectronIsolationKey {this, "ElectronIsolationKey", "Electrons.ptcone20"};
   Gaudi::Property<std::string> m_ParticlePrefix {this,"ParticlePrefix","electron","Name of the particle prefix to be used to define hists"};
   Gaudi::Property<std::string> m_RecoName {this,"RecoName","LHTight","Name of particle flavor in egamma reco"};
   Gaudi::Property<std::string> m_WithTrigger {this,"WithTrigger","","Name extension when electrons are chosen from triggered events"};
diff --git a/Reconstruction/egamma/egammaPerformance/src/MonitorPhotonAlgorithm.cxx b/Reconstruction/egamma/egammaPerformance/src/MonitorPhotonAlgorithm.cxx
index 00341330b04..5753e41688a 100755
--- a/Reconstruction/egamma/egammaPerformance/src/MonitorPhotonAlgorithm.cxx
+++ b/Reconstruction/egamma/egammaPerformance/src/MonitorPhotonAlgorithm.cxx
@@ -19,6 +19,7 @@ StatusCode MonitorPhotonAlgorithm::initialize() {
     using namespace Monitored;
     ATH_CHECK(AthMonitorAlgorithm::initialize() );
     ATH_CHECK( m_ParticleContainerKey.initialize() );
+    ATH_CHECK( m_PhotonIsolationKey.initialize() );
     return StatusCode::SUCCESS;
 }
 
diff --git a/Reconstruction/egamma/egammaPerformance/src/MonitorPhotonAlgorithm.h b/Reconstruction/egamma/egammaPerformance/src/MonitorPhotonAlgorithm.h
index f8921a4151b..775f59469df 100755
--- a/Reconstruction/egamma/egammaPerformance/src/MonitorPhotonAlgorithm.h
+++ b/Reconstruction/egamma/egammaPerformance/src/MonitorPhotonAlgorithm.h
@@ -29,6 +29,7 @@ class MonitorPhotonAlgorithm : public AthMonitorAlgorithm {
 
   private:
     SG::ReadHandleKey<xAOD::PhotonContainer> m_ParticleContainerKey {this, "ParticleContainerName", "Photons", "Name of electron container" };
+    SG::ReadDecorHandleKey<xAOD::PhotonContainer> m_PhotonIsolationKey {this, "PhotonIsolationKey", "Photons.ptcone20"};
     Gaudi::Property<std::string> m_ParticlePrefix {this,"ParticlePrefix","photon","Name of the particle prefix to be used to define hists"};
     Gaudi::Property<std::string> m_RecoName {this,"RecoName","Tight","Name of particle flavor in egamma reco"};
     Gaudi::Property<std::string> m_WithTrigger {this,"WithTrigger","","Name extension when electrons are chosen from triggered events"};
diff --git a/TileCalorimeter/TileMonitoring/src/TileDQFragMonitorAlgorithm.cxx b/TileCalorimeter/TileMonitoring/src/TileDQFragMonitorAlgorithm.cxx
index 8adc8a3ae49..c0e9aed5f3d 100644
--- a/TileCalorimeter/TileMonitoring/src/TileDQFragMonitorAlgorithm.cxx
+++ b/TileCalorimeter/TileMonitoring/src/TileDQFragMonitorAlgorithm.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TileDQFragMonitorAlgorithm.h"
@@ -29,6 +29,7 @@ StatusCode TileDQFragMonitorAlgorithm::initialize() {
   ATH_CHECK( m_DCSStateKey.initialize(m_checkDCS) );
   ATH_CHECK( m_digitsContainerKey.initialize(SG::AllowEmpty) );
   ATH_CHECK( m_rawChannelContainerKey.initialize(SG::AllowEmpty) );
+  ATH_CHECK( m_eventInfoTileStatusKey.initialize() );
 
   using Tile = TileCalibUtils;
 
diff --git a/TileCalorimeter/TileMonitoring/src/TileDQFragMonitorAlgorithm.h b/TileCalorimeter/TileMonitoring/src/TileDQFragMonitorAlgorithm.h
index 7e63e2b09de..9ca6101b0f0 100644
--- a/TileCalorimeter/TileMonitoring/src/TileDQFragMonitorAlgorithm.h
+++ b/TileCalorimeter/TileMonitoring/src/TileDQFragMonitorAlgorithm.h
@@ -87,6 +87,10 @@ class TileDQFragMonitorAlgorithm : public AthMonitorAlgorithm {
     SG::ReadHandleKey<TileDigitsContainer> m_digitsContainerKey{this,
         "TileDigitsContainer", "TileDigitsCnt", "Input Tile digits container key"};
 
+    SG::ReadDecorHandleKey<xAOD::EventInfo> m_eventInfoTileStatusKey{this, "EventInfoTileStatus",
+                                                                    "EventInfo.TileStatus",
+                                                                    "Aid to MT scheduling, do not change"};
+
     std::vector<std::vector<int>> m_errorsGroups;
     std::vector<std::vector<int>> m_errorsVsLBGroups;
 
diff --git a/TileCalorimeter/TileRecAlgs/src/MBTSTimeDiffEventInfoAlg.cxx b/TileCalorimeter/TileRecAlgs/src/MBTSTimeDiffEventInfoAlg.cxx
index d1f91f67887..f23e151387d 100644
--- a/TileCalorimeter/TileRecAlgs/src/MBTSTimeDiffEventInfoAlg.cxx
+++ b/TileCalorimeter/TileRecAlgs/src/MBTSTimeDiffEventInfoAlg.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // Tile includes
@@ -36,6 +36,7 @@ StatusCode MBTSTimeDiffEventInfoAlg::initialize() {
   ATH_CHECK( m_mbtsContainerKey.initialize() );
   ATH_CHECK( m_eventInfoKey.initialize() );
   ATH_CHECK( m_mbtsCollisionTimeKey.initialize() );
+  ATH_CHECK( m_eventInfoDecorKey.initialize() );
 
   return StatusCode::SUCCESS;
 }
diff --git a/TileCalorimeter/TileRecAlgs/src/MBTSTimeDiffEventInfoAlg.h b/TileCalorimeter/TileRecAlgs/src/MBTSTimeDiffEventInfoAlg.h
index 218a33cf3ce..257a21ca821 100644
--- a/TileCalorimeter/TileRecAlgs/src/MBTSTimeDiffEventInfoAlg.h
+++ b/TileCalorimeter/TileRecAlgs/src/MBTSTimeDiffEventInfoAlg.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TILERECALGS_MBTSTIMEDIFFEVENTINFOALG_
@@ -42,6 +42,7 @@ class MBTSTimeDiffEventInfoAlg: public AthReentrantAlgorithm {
     SG::ReadHandleKey<TileCellContainer> m_mbtsContainerKey{this,"MBTSContainer","MBTSContainer","Input MBTS container key"};
     SG::ReadHandleKey<xAOD::EventInfo> m_eventInfoKey{this, "EventInfo", "EventInfo", "Input Event info key"};
     SG::WriteHandleKey<MBTSCollisionTime> m_mbtsCollisionTimeKey{this,"MBTSCollisionTime","MBTSCollisionTime","Output MBTS collision time key"};
+    SG::WriteDecorHandleKey<xAOD::EventInfo> m_eventInfoDecorKey{this, "EventInfoDecorKey", "EventInfo.MBTSBackground", "EventInfo decoration key"};
 
     const TileTBID* m_tileTBID{nullptr};
 
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileCellBuilder.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileCellBuilder.h
index d4a35d2ffb6..17eb77928e5 100644
--- a/TileCalorimeter/TileRecUtils/TileRecUtils/TileCellBuilder.h
+++ b/TileCalorimeter/TileRecUtils/TileRecUtils/TileCellBuilder.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TILERECUTILS_TILECELLBUILDER_H
@@ -159,6 +159,10 @@ private:
                                                              "E4prContainer",
                                                              "Output Tile E4 prime container key"};
 
+    SG::WriteDecorHandleKey<xAOD::EventInfo> m_EventInfoTileStatusKey{this, "EventInfoTileStatus",
+                                                                      "EventInfo.TileStatus",
+                                                                      "Dummy decoration key to aid scheduling"};
+
 
     std::string m_dspRawChannelContainer;
 
diff --git a/TileCalorimeter/TileRecUtils/src/TileCellBuilder.cxx b/TileCalorimeter/TileRecUtils/src/TileCellBuilder.cxx
index 4fdedbfd143..008b9eefa39 100644
--- a/TileCalorimeter/TileRecUtils/src/TileCellBuilder.cxx
+++ b/TileCalorimeter/TileRecUtils/src/TileCellBuilder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // Tile includes
@@ -175,6 +175,7 @@ StatusCode TileCellBuilder::initialize() {
 
   ATH_CHECK( m_eventInfoKey.initialize() );
   ATH_CHECK( m_DQstatusKey.initialize() );
+  ATH_CHECK( m_EventInfoTileStatusKey.initialize() );
 
   ATH_CHECK( detStore()->retrieve(m_tileMgr) );
   ATH_CHECK( detStore()->retrieve(m_tileID) );
-- 
GitLab