From 491f367400b6da04f4feb2649b944d39f398059e Mon Sep 17 00:00:00 2001
From: Savanna Marie Shaw <savanna.marie.shaw@cern.ch>
Date: Thu, 17 Oct 2019 12:51:14 +0200
Subject: [PATCH] Add protection against empty PRD containers in muon chamber
 hole recovery

Adding some protection against empty PRD containers as this can happen in the trigger (since we don't decode the full detector for every event). Addresses the crashes reported in ATR-20373 and ATR-20397.
---
 .../src/MuonChamberHoleRecoveryTool.cxx                     | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx
index ad4ae067fe8..5d69e511153 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx
@@ -1283,6 +1283,7 @@ namespace Muon {
       ATH_MSG_WARNING("Cannot retrieve mdtPrepDataContainer " << m_key_mdt.key() );
       return 0;
     }
+    if(mdtPrdContainer->size()==0) return 0;
     IdentifierHash hash_id;
     m_idHelperTool->mdtIdHelper().get_module_hash(chId,hash_id );
     
@@ -1306,6 +1307,7 @@ namespace Muon {
       ATH_MSG_WARNING("Cannot retrieve cscPrepDataContainer " << m_key_csc.key() );
       return 0;
     }
+    if(cscPrdContainer->size()==0) return 0;
     IdentifierHash hash_id;
     m_idHelperTool->cscIdHelper().get_geo_module_hash(detElId,hash_id );
     
@@ -1329,6 +1331,7 @@ namespace Muon {
       ATH_MSG_WARNING("Cannot retrieve tgcPrepDataContainer " << m_key_tgc.key() );
       return 0;
     }
+    if(tgcPrdContainer->size()==0) return 0;
     IdentifierHash hash_id;
     m_idHelperTool->tgcIdHelper().get_module_hash(detElId,hash_id );
 
@@ -1352,6 +1355,7 @@ namespace Muon {
       ATH_MSG_WARNING("Cannot retrieve rpcPrepDataContainer " << m_key_rpc.key() );
       return 0;
     }
+    if(rpcPrdContainer->size()==0) return 0;
     IdentifierHash hash_id;
     m_idHelperTool->rpcIdHelper().get_module_hash(detElId,hash_id );
     RpcPrepDataContainer::const_iterator colIt = rpcPrdContainer->indexFind(hash_id);
@@ -1373,6 +1377,7 @@ namespace Muon {
       ATH_MSG_WARNING("Cannot retrieve stgcPrepDataContainer " << m_key_stgc.key() );
       return 0;
     }
+    if(stgcPrdContainer->size()==0) return 0;
     IdentifierHash hash_id;
     m_idHelperTool->stgcIdHelper().get_module_hash(detElId, hash_id );
     
@@ -1396,6 +1401,7 @@ namespace Muon {
       ATH_MSG_WARNING("Cannot retrieve stgcPrepDataContainer " << m_key_mm.key() );
       return 0;
     }
+    if(mmPrdContainer->size()==0) return 0;
     
     IdentifierHash hash_id;
     m_idHelperTool->mmIdHelper().get_module_hash(detElId, hash_id );
-- 
GitLab