From c2e04963c5225450d9aef6604059b3fdd1f016d7 Mon Sep 17 00:00:00 2001
From: Selaiman Ridouani <selaiman.ridouani@cern.ch>
Date: Fri, 14 Mar 2025 16:32:45 +0100
Subject: [PATCH] Add check for empty tool in ST

---
 .../SUSYPhys/SUSYTools/Root/Electrons.cxx     | 97 ++++++++++++-------
 1 file changed, 61 insertions(+), 36 deletions(-)

diff --git a/PhysicsAnalysis/SUSYPhys/SUSYTools/Root/Electrons.cxx b/PhysicsAnalysis/SUSYPhys/SUSYTools/Root/Electrons.cxx
index d65f213807a3..7c91db166b29 100644
--- a/PhysicsAnalysis/SUSYPhys/SUSYTools/Root/Electrons.cxx
+++ b/PhysicsAnalysis/SUSYPhys/SUSYTools/Root/Electrons.cxx
@@ -637,34 +637,47 @@ double SUSYObjDef_xAOD::GetEleTriggerEfficiency(const xAOD::Electron& el, const
   float sf(1.);
 
   //Set the new systematic variation
-  StatusCode ret = m_elecEfficiencySFTool_reco->applySystematicVariation(systConfig);
-  if (ret != StatusCode::SUCCESS) {
-    ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.name() );
+  StatusCode ret(StatusCode::SUCCESS);
+  if(!m_elecEfficiencySFTool_reco.empty()){
+    ret = m_elecEfficiencySFTool_reco->applySystematicVariation(systConfig);
+    if (ret != StatusCode::SUCCESS) {
+      ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.name() );
+    }
   }
 
-  ret = m_elecEfficiencySFTool_id->applySystematicVariation(systConfig);
-  if (ret != StatusCode::SUCCESS) {
-    ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (id) for systematic var. " << systConfig.name() );
+  if(!m_elecEfficiencySFTool_id.empty()){
+    ret = m_elecEfficiencySFTool_id->applySystematicVariation(systConfig);
+    if (ret != StatusCode::SUCCESS) {
+      ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (id) for systematic var. " << systConfig.name() );
+    }
   }
 
-  ret = m_elecEfficiencySFTool_trig_singleLep->applySystematicVariation(systConfig);
-  if (ret != StatusCode::SUCCESS) {
-    ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
+  if(!m_elecEfficiencySFTool_trig_singleLep.empty()){
+    ret = m_elecEfficiencySFTool_trig_singleLep->applySystematicVariation(systConfig);
+    if (ret != StatusCode::SUCCESS) {
+      ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
+    }
   }
 
-  ret = m_elecEfficiencySFTool_iso->applySystematicVariation(systConfig);
-  if (ret != StatusCode::SUCCESS) {
-    ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.name() );
+  if(!m_elecEfficiencySFTool_iso.empty()){
+    ret = m_elecEfficiencySFTool_iso->applySystematicVariation(systConfig);
+    if (ret != StatusCode::SUCCESS) {
+      ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.name() );
+    }
   }
 
-  ret = m_elecEfficiencySFTool_isoHighPt->applySystematicVariation(systConfig);
-  if (ret != StatusCode::SUCCESS) {
-    ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) for systematic var. " << systConfig.name() );
+  if(!m_elecEfficiencySFTool_isoHighPt.empty()){
+    ret = m_elecEfficiencySFTool_isoHighPt->applySystematicVariation(systConfig);
+    if (ret != StatusCode::SUCCESS) {
+      ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) for systematic var. " << systConfig.name() );
+    }
   }
 
-  ret = m_elecChargeEffCorrTool->applySystematicVariation(systConfig);
-  if (ret != StatusCode::SUCCESS) {
-    ATH_MSG_ERROR("Cannot configure ElectronChargeEfficiencyCorrectionTool for systematic var. " << systConfig.name() );
+  if(!m_elecChargeEffCorrTool.empty()){
+    ret = m_elecChargeEffCorrTool->applySystematicVariation(systConfig);
+    if (ret != StatusCode::SUCCESS) {
+      ATH_MSG_ERROR("Cannot configure ElectronChargeEfficiencyCorrectionTool for systematic var. " << systConfig.name() );
+    }
   }
 
 
@@ -672,34 +685,46 @@ double SUSYObjDef_xAOD::GetEleTriggerEfficiency(const xAOD::Electron& el, const
   sf = GetTotalElectronSF(electrons, recoSF, idSF, triggerSF, isoSF, trigExpr, ecidsSF, cidSF);
 
   //Roll back to default
-  ret = m_elecEfficiencySFTool_reco->applySystematicVariation(m_currentSyst);
-  if (ret != StatusCode::SUCCESS) {
-    ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (reco) back to default.");
+  if(!m_elecEfficiencySFTool_reco.empty()){
+    ret = m_elecEfficiencySFTool_reco->applySystematicVariation(m_currentSyst);
+    if (ret != StatusCode::SUCCESS) {
+      ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (reco) back to default.");
+    }
   }
 
-  ret = m_elecEfficiencySFTool_id->applySystematicVariation(m_currentSyst);
-  if (ret != StatusCode::SUCCESS) {
-    ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (id) back to default.");
+  if(!m_elecEfficiencySFTool_id.empty()){
+    ret = m_elecEfficiencySFTool_id->applySystematicVariation(m_currentSyst);
+    if (ret != StatusCode::SUCCESS) {
+      ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (id) back to default.");
+    }
   }
 
-  ret = m_elecEfficiencySFTool_trig_singleLep->applySystematicVariation(m_currentSyst);
-  if (ret != StatusCode::SUCCESS) {
-    ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) back to default.");
+  if(!m_elecEfficiencySFTool_trig_singleLep.empty()){
+    ret = m_elecEfficiencySFTool_trig_singleLep->applySystematicVariation(m_currentSyst);
+    if (ret != StatusCode::SUCCESS) {
+      ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) back to default.");
+    }
   }
 
-  ret = m_elecEfficiencySFTool_iso->applySystematicVariation(m_currentSyst);
-  if (ret != StatusCode::SUCCESS) {
-    ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso) back to default.");
+  if(!m_elecEfficiencySFTool_iso.empty()){
+    ret = m_elecEfficiencySFTool_iso->applySystematicVariation(m_currentSyst);
+    if (ret != StatusCode::SUCCESS) {
+      ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso) back to default.");
+    }
   }
 
-  ret = m_elecEfficiencySFTool_isoHighPt->applySystematicVariation(m_currentSyst);
-  if (ret != StatusCode::SUCCESS) {
-    ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) back to default.");
+  if(!m_elecEfficiencySFTool_isoHighPt.empty()){
+    ret = m_elecEfficiencySFTool_isoHighPt->applySystematicVariation(m_currentSyst);
+    if (ret != StatusCode::SUCCESS) {
+      ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) back to default.");
+    }
   }
 
-  ret = m_elecChargeEffCorrTool->applySystematicVariation(m_currentSyst);
-  if (ret != StatusCode::SUCCESS) {
-    ATH_MSG_ERROR("Cannot configure ElectronChargeEfficiencyCorrectionTool back to default.");
+  if(!m_elecChargeEffCorrTool.empty()){
+    ret = m_elecChargeEffCorrTool->applySystematicVariation(m_currentSyst);
+    if (ret != StatusCode::SUCCESS) {
+      ATH_MSG_ERROR("Cannot configure ElectronChargeEfficiencyCorrectionTool back to default.");
+    }
   }
 
   return sf;
-- 
GitLab