From 290a42bb3b9c6020a2e1c5875af648c1c620e430 Mon Sep 17 00:00:00 2001
From: eegidiop <edmar.egidio.purcino.de.souza@cern.ch>
Date: Thu, 20 Jan 2022 21:07:18 +0100
Subject: [PATCH 1/2] Handle new PrecisionCalo keys within TrigEgammaMonitoring
 and TrigEgammaMatchingTool

---
 .../Root/TrigEgammaMatchingToolMT.cxx         | 29 +++++++++++--------
 .../TrigEgammaMatchingToolMT.icc              |  5 +++-
 .../TrigEgammaMonitorAnalysisAlgorithm.cxx    |  4 ++-
 .../src/TrigEgammaMonitorBaseAlgorithm.cxx    |  7 +++--
 4 files changed, 28 insertions(+), 17 deletions(-)

diff --git a/Trigger/TrigAnalysis/TrigEgammaMatchingTool/Root/TrigEgammaMatchingToolMT.cxx b/Trigger/TrigAnalysis/TrigEgammaMatchingTool/Root/TrigEgammaMatchingToolMT.cxx
index e466d736bce8..0b548f63f01d 100644
--- a/Trigger/TrigAnalysis/TrigEgammaMatchingTool/Root/TrigEgammaMatchingToolMT.cxx
+++ b/Trigger/TrigAnalysis/TrigEgammaMatchingTool/Root/TrigEgammaMatchingToolMT.cxx
@@ -38,20 +38,23 @@ StatusCode TrigEgammaMatchingToolMT::initialize()
   ATH_CHECK( m_ringerKey.initialize() );
 
 
-  m_keys[ "Electrons"]         = "HLT_egamma_Electrons" ;
-  m_keys[ "Electrons_GSF"]     = "HLT_egamma_Electrons_GSF" ; // gsf
-  m_keys[ "Electrons_LRT"]     = "HLT_egamma_Electrons_LRT" ; // lrt
-  m_keys[ "Photons"]           = "HLT_egamma_Photons" ;
+  m_keys[ "Electrons"]                = "HLT_egamma_Electrons" ;
+  m_keys[ "Electrons_GSF"]            = "HLT_egamma_Electrons_GSF" ; // gsf
+  m_keys[ "Electrons_LRT"]            = "HLT_egamma_Electrons_LRT" ; // lrt
+  m_keys[ "Photons"]                  = "HLT_egamma_Photons" ;
+
   // intermediate steps
-  m_keys[ "PrecisionCalo"]     = "HLT_CaloEMClusters" ;
-  m_keys[ "PrecisionCalo_LRT"] = "HLT_CaloEMClusters_LRT" ; // lrt
+  m_keys[ "PrecisionCalo_Electron"]   = "HLT_CaloEMClusters_Electron";
+  m_keys[ "PrecisionCalo_Photon"]     = "HLT_CaloEMClusters_Photon";
+  m_keys[ "PrecisionCalo_LRT"]        = "HLT_CaloEMClusters_LRT" ; // lrt
+
   // Fast steps
-  m_keys[ "FastElectrons"]     = "HLT_FastElectrons" ;
-  m_keys[ "FastElectrons_LRT"] = "HLT_FastElectrons_LRT" ; // lrt
-  m_keys[ "FastPhotons"]       = "HLT_FastPhotons" ;
-  m_keys[ "FastCalo"]          = "HLT_FastCaloEMClusters" ;
+  m_keys[ "FastElectrons"]            = "HLT_FastElectrons" ;
+  m_keys[ "FastElectrons_LRT"]        = "HLT_FastElectrons_LRT" ; // lrt
+  m_keys[ "FastPhotons"]              = "HLT_FastPhotons" ;
+  m_keys[ "FastCalo"]                 = "HLT_FastCaloEMClusters" ;
   // L1
-  m_keys[ "L1Calo"]            = "LVL1EmTauRoIs" ;
+  m_keys[ "L1Calo"]                   = "LVL1EmTauRoIs" ;
 
   return StatusCode::SUCCESS;
 }
@@ -152,8 +155,10 @@ bool TrigEgammaMatchingToolMT::matchHLTCalo(const xAOD::Egamma *eg,const std::st
   ATH_MSG_DEBUG("Match HLT Calo");
   if(boost::contains(trigger,"lrt")){
     return closestObject<xAOD::CaloClusterContainer>( eg, dec, trigger, key("PrecisionCalo_LRT"), condition );
+  }else if(xAOD::EgammaHelpers::isElectron(eg)){
+    return closestObject<xAOD::CaloClusterContainer>( eg, dec, trigger, key("PrecisionCalo_Electron"), condition );
   }else{
-    return closestObject<xAOD::CaloClusterContainer>( eg, dec, trigger, key("PrecisionCalo"), condition );
+    return closestObject<xAOD::CaloClusterContainer>( eg, dec, trigger, key("PrecisionCalo_Photon"), condition );
   }
 }
 
diff --git a/Trigger/TrigAnalysis/TrigEgammaMatchingTool/TrigEgammaMatchingTool/TrigEgammaMatchingToolMT.icc b/Trigger/TrigAnalysis/TrigEgammaMatchingTool/TrigEgammaMatchingTool/TrigEgammaMatchingToolMT.icc
index 35793e15f0e3..a3393c4c5353 100644
--- a/Trigger/TrigAnalysis/TrigEgammaMatchingTool/TrigEgammaMatchingTool/TrigEgammaMatchingToolMT.icc
+++ b/Trigger/TrigAnalysis/TrigEgammaMatchingTool/TrigEgammaMatchingTool/TrigEgammaMatchingToolMT.icc
@@ -173,12 +173,15 @@ const
 {
   if(boost::contains(trigger,"lrt")){
     return getFeatures<xAOD::CaloClusterContainer>(dec, trigger, key("PrecisionCalo_LRT"), condition );
+  }else if(boost::contains(trigger,"g")){
+    return getFeatures<xAOD::CaloClusterContainer>(dec, trigger, key("PrecisionCalo_Photon"), condition );
   }else{
-    return getFeatures<xAOD::CaloClusterContainer>(dec, trigger, key("PrecisionCalo"), condition );
+    return getFeatures<xAOD::CaloClusterContainer>(dec, trigger, key("PrecisionCalo_Electron"), condition );
   }
 }
 
 
+
 // Electron
 template<>
 inline std::vector<TrigCompositeUtils::LinkInfo<xAOD::ElectronContainer>> TrigEgammaMatchingToolMT::getFeatures<xAOD::ElectronContainer>( 
diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorAnalysisAlgorithm.cxx b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorAnalysisAlgorithm.cxx
index 53cdfa40369b..cf74067d4b6f 100644
--- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorAnalysisAlgorithm.cxx
+++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorAnalysisAlgorithm.cxx
@@ -380,7 +380,9 @@ void TrigEgammaMonitorAnalysisAlgorithm::fillDistributions( const std::vector< s
   }
   // EFCalo
   {
-    std::string key = info.lrt? match()->key("PrecisionCalo_LRT") : match()->key("PrecisionCalo");
+    std::string key = match()->key("PrecisionCalo_Electron");
+    if(info.signature == "Photon") key = match()->key("PrecisionCalo_Photon");
+    if(info.lrt) key = match()->key("PrecisionCalo_LRT");
     
     std::vector<const xAOD::CaloCluster* > clus_vec;
     auto vec =  tdt()->features<xAOD::CaloClusterContainer>(trigger,condition,key);      
diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorBaseAlgorithm.cxx b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorBaseAlgorithm.cxx
index cb22cd2ded1d..6696aec8030c 100644
--- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorBaseAlgorithm.cxx
+++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorBaseAlgorithm.cxx
@@ -209,10 +209,11 @@ asg::AcceptData TrigEgammaMonitorBaseAlgorithm::setAccept( const TrigCompositeUt
 
                 if(passedL2){
 
-
                     // Step 4
-                    std::string key = match()->key("PrecisionCalo");
-                    if(info.lrt)  key = match()->key("PrecisionCalo_LRT");
+                    std::string key = match()->key("PrecisionCalo_Electron");
+                    if(info.signature == "Photon") key = match()->key("PrecisionCalo_Photon");
+                    if(info.lrt) key = match()->key("PrecisionCalo_LRT");
+
                     passedEFCalo = match()->ancestorPassed<xAOD::CaloClusterContainer>(dec, trigger, key, condition);
 
                     if(passedEFCalo){
-- 
GitLab


From e619605bae9771468b5216f48b2b7c3651d3d97b Mon Sep 17 00:00:00 2001
From: eegidiop <edmar.egidio.purcino.de.souza@cern.ch>
Date: Thu, 20 Jan 2022 22:54:35 +0100
Subject: [PATCH 2/2] Fix access mode in the TrigEgammaMatchingTool  interface

---
 .../Root/TrigEgammaMatchingToolMT.cxx                  | 10 ++++++++--
 .../TrigEgammaMatchingToolMT.icc                       |  6 +++++-
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/Trigger/TrigAnalysis/TrigEgammaMatchingTool/Root/TrigEgammaMatchingToolMT.cxx b/Trigger/TrigAnalysis/TrigEgammaMatchingTool/Root/TrigEgammaMatchingToolMT.cxx
index 0b548f63f01d..581b328da49c 100644
--- a/Trigger/TrigAnalysis/TrigEgammaMatchingTool/Root/TrigEgammaMatchingToolMT.cxx
+++ b/Trigger/TrigAnalysis/TrigEgammaMatchingTool/Root/TrigEgammaMatchingToolMT.cxx
@@ -152,13 +152,19 @@ bool TrigEgammaMatchingToolMT::matchHLTElectron(const xAOD::Electron *eg,const s
 
 bool TrigEgammaMatchingToolMT::matchHLTCalo(const xAOD::Egamma *eg,const std::string &trigger, const TrigCompositeUtils::Decision *&dec, unsigned int condition ) const
 { 
-  ATH_MSG_DEBUG("Match HLT Calo");
+  ATH_MSG_DEBUG("Match HLT PrecisionCalo");
   if(boost::contains(trigger,"lrt")){
+    ATH_MSG_DEBUG("Matched HLT PrecisionCalo LRT");
     return closestObject<xAOD::CaloClusterContainer>( eg, dec, trigger, key("PrecisionCalo_LRT"), condition );
   }else if(xAOD::EgammaHelpers::isElectron(eg)){
+    ATH_MSG_DEBUG("Matched HLT PrecisionCalo Electron");
     return closestObject<xAOD::CaloClusterContainer>( eg, dec, trigger, key("PrecisionCalo_Electron"), condition );
-  }else{
+  }else if(xAOD::EgammaHelpers::isPhoton(eg)){
+    ATH_MSG_DEBUG("Matched HLT PrecisionCalo Photon");
     return closestObject<xAOD::CaloClusterContainer>( eg, dec, trigger, key("PrecisionCalo_Photon"), condition );
+  }else{
+    ATH_MSG_DEBUG("Match HLT PrecisionCalo failed!");
+    return false;
   }
 }
 
diff --git a/Trigger/TrigAnalysis/TrigEgammaMatchingTool/TrigEgammaMatchingTool/TrigEgammaMatchingToolMT.icc b/Trigger/TrigAnalysis/TrigEgammaMatchingTool/TrigEgammaMatchingTool/TrigEgammaMatchingToolMT.icc
index a3393c4c5353..f0e9eea5228c 100644
--- a/Trigger/TrigAnalysis/TrigEgammaMatchingTool/TrigEgammaMatchingTool/TrigEgammaMatchingToolMT.icc
+++ b/Trigger/TrigAnalysis/TrigEgammaMatchingTool/TrigEgammaMatchingTool/TrigEgammaMatchingToolMT.icc
@@ -171,13 +171,17 @@ inline std::vector<TrigCompositeUtils::LinkInfo<xAOD::CaloClusterContainer>> Tri
                                                                 const TrigCompositeUtils::Decision *dec , std::string trigger, unsigned int condition)
 const
 {
+  std::vector<std::string> parts;
+  boost::split(parts,trigger,boost::is_any_of("_"));
+
   if(boost::contains(trigger,"lrt")){
     return getFeatures<xAOD::CaloClusterContainer>(dec, trigger, key("PrecisionCalo_LRT"), condition );
-  }else if(boost::contains(trigger,"g")){
+  }else if(boost::contains(parts.at(0),"g")){
     return getFeatures<xAOD::CaloClusterContainer>(dec, trigger, key("PrecisionCalo_Photon"), condition );
   }else{
     return getFeatures<xAOD::CaloClusterContainer>(dec, trigger, key("PrecisionCalo_Electron"), condition );
   }
+
 }
 
 
-- 
GitLab