diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaAnalysisBaseTool.cxx b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaAnalysisBaseTool.cxx
index c42b38fa21ef3618a34e322cd22f6dd0650f7879..f8ec0a6d85280c4a644765306e0ae9ff743a1600 100644
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaAnalysisBaseTool.cxx
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaAnalysisBaseTool.cxx
@@ -85,6 +85,8 @@ TrigEgammaAnalysisBaseTool( const std::string& myname )
     m_nPVertex=0;
     m_offmu=0.;
     m_onlmu=0.;
+    m_sgContainsRnn=false;
+    m_sgContainsTrigPhoton=false;
 }
 
 void TrigEgammaAnalysisBaseTool::updateDetail(Property& /*p*/){
@@ -540,9 +542,16 @@ void TrigEgammaAnalysisBaseTool::setAccept(const HLT::TriggerElement *te,const T
     
     passedL1Calo = ancestorPassed<xAOD::EmTauRoI>(te);
     bool hasRnn = false;
-    if(getFeature<xAOD::TrigRNNOutput>(te)){
-        hasRnn=true;
+    
+    ATH_MSG_DEBUG("Rnn container " << getSGContainsRnn());
+    ATH_MSG_DEBUG("TrigPhotonContainer " << getSGContainsTrigPhoton());
+    
+    if(getSGContainsRnn()){
+        if(getFeature<xAOD::TrigRNNOutput>(te)){
+            hasRnn=true;
+        }
     }
+    
 
     if(!info.trigL1){ // HLT item get full decision
         ATH_MSG_DEBUG("Check for active features: TrigEMCluster,CaloClusterContainer");
@@ -563,7 +572,9 @@ void TrigEgammaAnalysisBaseTool::setAccept(const HLT::TriggerElement *te,const T
         }
         else if(info.trigType == "photon"){
             ATH_MSG_DEBUG("Check for active features: TrigPhoton, PhotonContainer");
-            passedL2=ancestorPassed<xAOD::TrigPhotonContainer>(te);
+            if(getSGContainsTrigPhoton()){
+                passedL2=ancestorPassed<xAOD::TrigPhotonContainer>(te);
+            }
             passedEF = ancestorPassed<xAOD::PhotonContainer>(te);
             passedEFTrk=true;// Assume true for photons
         }
diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavAnalysisTool.cxx b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavAnalysisTool.cxx
index e645c30bb6523f950e88d3fbf35dc17588cfa861..f908a9d6ecb3d4fe2caae531f0cfc497787e3872 100644
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavAnalysisTool.cxx
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavAnalysisTool.cxx
@@ -79,6 +79,21 @@ StatusCode TrigEgammaNavAnalysisTool::childExecute(){
         ATH_MSG_DEBUG("Fails EventWise selection");
         return StatusCode::SUCCESS; //return nicely
     }
+    // Check for Rnn container in SG
+    if(m_storeGate->contains<xAOD::TrigRNNOutputContainer>("HLT_xAOD__TrigRNNOutputContainer_TrigRingerNeuralFex")){
+        ATH_MSG_DEBUG("Rnn container in SG "); 
+        setSGContainsRnn(true);
+    }
+    if(m_storeGate->contains<xAOD::TrigPhotonContainer>("HLT_xAOD__TrigPhotonContainer_L2PhotonFex")){
+        ATH_MSG_DEBUG("TrigPhotonContainer in SG ");
+        setSGContainsTrigPhoton(true);
+    }
+    ATH_MSG_DEBUG("Rnn container in SG " << getSGContainsRnn());
+    ATH_MSG_DEBUG("TrigPhotonContainer in SG " << getSGContainsTrigPhoton());
+    for( const auto& tool : m_tools) {
+        tool->setSGContainsRnn(getSGContainsRnn());
+        tool->setSGContainsTrigPhoton(getSGContainsTrigPhoton());
+    }
 
     // Check HLTResult
     if(tdt()->ExperimentalAndExpertMethods()->isHLTTruncated()){
diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavBaseTool.cxx b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavBaseTool.cxx
index bd885310cefba86ec3e87ff0e2957239b53a2caa..725ec003b54722b28a4858483dfd688c5d67ce22 100644
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavBaseTool.cxx
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavBaseTool.cxx
@@ -136,6 +136,7 @@ bool TrigEgammaNavBaseTool::EventWiseSelection( ){
     //Calculate number of vertex 
     TrigEgammaAnalysisBaseTool::calculatePileupPrimaryVertex();   
 
+
     return true; 
 }
 
diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPAnalysisTool.cxx b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPAnalysisTool.cxx
index 22ad1dad5f18ce7ed4d8f8141b4b01fc56e42c99..b1b98a084d9d977831a70e5c78f273cd5114e590 100644
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPAnalysisTool.cxx
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPAnalysisTool.cxx
@@ -136,6 +136,19 @@ StatusCode TrigEgammaNavTPAnalysisTool::childExecute()
         ATH_MSG_DEBUG("Fails EventWise selection");
         return StatusCode::SUCCESS;
     }
+    // Check for Rnn container in SG
+    if(m_storeGate->contains<xAOD::TrigRNNOutputContainer>("HLT_xAOD__TrigRNNOutputContainer_TrigRingerNeuralFex")){
+        setSGContainsRnn(true);
+    }
+    if(m_storeGate->contains<xAOD::TrigPhotonContainer>("HLT_xAOD__TrigPhotonContainer_L2PhotonFex")){
+        setSGContainsTrigPhoton(true);
+    }
+    ATH_MSG_DEBUG("Rnn container in SG " << getSGContainsRnn());
+    ATH_MSG_DEBUG("TrigPhotonContainer in SG " << getSGContainsTrigPhoton());
+    for( const auto& tool : m_tools) {
+        tool->setSGContainsRnn(getSGContainsRnn());
+        tool->setSGContainsTrigPhoton(getSGContainsTrigPhoton());
+    }
     // Event Wise Selection (independent of the required signatures)
     hist1(m_anatype+"_CutCounter")->Fill("EventWise",1);
     // Select TP Pairs
diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPBaseTool.cxx b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPBaseTool.cxx
index 097d92f4d3b0ebde2c1c36a81dfc7ab1e2fca7ca..8851771df28cf4d3db5645aec9391abe0e4e6fc0 100644
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPBaseTool.cxx
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPBaseTool.cxx
@@ -175,6 +175,7 @@ bool TrigEgammaNavTPBaseTool::EventWiseSelection(){
     if ( !MinimalTriggerRequirement() ) return false;
     hist1(m_anatype+"_CutCounter")->Fill("PassTrigger",1);
 
+    
     return true;
 }
 
diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaPlotTool.cxx b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaPlotTool.cxx
index a51655d48417e9fcc539b0ee951d5ba1123a67a6..74ef030332ad7d7cd6432628b31c8a79d88a15e8 100644
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaPlotTool.cxx
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaPlotTool.cxx
@@ -202,8 +202,8 @@ void TrigEgammaPlotTool::setBinning(){
     m_defaultEtabins.insert(m_defaultEtabins.end(), &default_eta_bins[0], &default_eta_bins[m_ndefaultEtabins+1]);
     m_coarseEtbins.insert(m_coarseEtbins.end(), &coarse_et_bins[0], &coarse_et_bins[m_ncoarseEtbins+1]);
     m_coarseEtabins.insert(m_coarseEtabins.end(), &coarse_eta_bins[0], &coarse_eta_bins[m_ncoarseEtabins+1]);
-    m_minBin_ringer.insert(m_minBin_ringer.end(), &minBin_ringer[0], &minBin_ringer[100+1]);
-    m_maxBin_ringer.insert(m_maxBin_ringer.end(), &maxBin_ringer[0], &maxBin_ringer[100+1]);
+    m_minBin_ringer.insert(m_minBin_ringer.end(), &minBin_ringer[0], &minBin_ringer[100]);
+    m_maxBin_ringer.insert(m_maxBin_ringer.end(), &maxBin_ringer[0], &maxBin_ringer[100]);
 }
 
 StatusCode TrigEgammaPlotTool::book(std::map<std::string,TrigInfo> trigInfo){
diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaResolutionTool.cxx b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaResolutionTool.cxx
index 5c88a8fb88f1ab918df3b11bf4d16c98516334b1..d49c150f44fb2ec69d1e26178e61d0b16d820f97 100644
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaResolutionTool.cxx
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaResolutionTool.cxx
@@ -144,14 +144,17 @@ void TrigEgammaResolutionTool::resolutionElectron(const std::string basePath,std
 
 void TrigEgammaResolutionTool::resolutionL2Photon(const std::string dir,std::pair< const xAOD::Egamma*,const HLT::TriggerElement*> pairObj){
     cd(dir);
+    ATH_MSG_DEBUG("L2 Photon Resolution");
     float dRmax = 100;
     const xAOD::TrigPhoton *phL2 = nullptr;
-    if(pairObj.second){
-        if(ancestorPassed<xAOD::TrigPhotonContainer>(pairObj.second))
-            phL2=closestObject<xAOD::TrigPhoton,xAOD::TrigPhotonContainer>(pairObj,dRmax);
-        if(phL2){    
-            if(dRmax < 0.05){
-                //Do something here
+    if(getSGContainsTrigPhoton()){
+        if(pairObj.second){
+            if(ancestorPassed<xAOD::TrigPhotonContainer>(pairObj.second))
+                phL2=closestObject<xAOD::TrigPhoton,xAOD::TrigPhotonContainer>(pairObj,dRmax);
+            if(phL2){    
+                if(dRmax < 0.05){
+                    //Do something here
+                }
             }
         }
     }
diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/ITrigEgammaAnalysisBaseTool.h b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/ITrigEgammaAnalysisBaseTool.h
index 366d3441c265dbbe286b6e097faa9703cf5d98a0..2b201ce53549c6654068388fb981a6ba798fb4f1 100644
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/ITrigEgammaAnalysisBaseTool.h
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/ITrigEgammaAnalysisBaseTool.h
@@ -42,6 +42,8 @@ public:
   virtual void setEmulationTool(ToolHandle<Trig::ITrigEgammaEmulationTool>)=0;
   virtual void setAvgMu(const float, const float)=0;
   virtual void setPVertex(const float, const float)=0;
+  virtual void setSGContainsRnn(bool)=0;
+  virtual void setSGContainsTrigPhoton(bool)=0; 
   
   virtual StatusCode childInitialize(){return StatusCode::SUCCESS;};
   virtual StatusCode childBook(){return StatusCode::SUCCESS;};
diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/TrigEgammaAnalysisBaseTool.h b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/TrigEgammaAnalysisBaseTool.h
index 3c52f9393f9d1765037aca50e420ef364696eff3..e51b28c86e899e8a3b8c7f2878ac26469f7e434e 100644
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/TrigEgammaAnalysisBaseTool.h
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/TrigEgammaAnalysisBaseTool.h
@@ -26,6 +26,8 @@
 #include "xAODEgamma/ElectronAuxContainer.h"
 #include "xAODTrigRinger/TrigRingerRings.h"
 #include "xAODTrigRinger/TrigRingerRingsContainer.h"
+#include "xAODTrigRinger/TrigRNNOutput.h"
+#include "xAODTrigRinger/TrigRNNOutputContainer.h"
 #include "xAODTracking/TrackParticleContainer.h"
 #include "xAODTrigger/TrigPassBits.h"
 #include "xAODEgamma/PhotonAuxContainer.h"
@@ -70,7 +72,9 @@ public:
   void setEmulationTool(ToolHandle<Trig::ITrigEgammaEmulationTool> tool){m_emulationTool=tool;}
   void setPVertex(const float onvertex, const float ngoodvertex){m_nPVertex = onvertex; m_nGoodVertex = ngoodvertex;}
   void setAvgMu(const float onlmu, const float offmu){m_onlmu=onlmu; m_offmu=offmu;} //For tools called by tools
-
+  void setSGContainsRnn(bool contains) {m_sgContainsRnn=contains;}
+  void setSGContainsTrigPhoton(bool contains) {m_sgContainsTrigPhoton=contains;}
+  
   // Set current MonGroup
   void cd(const std::string &dir);
   // Accessor members
@@ -111,7 +115,10 @@ private:
   float m_offmu;
   float m_nGoodVertex; 
   float m_nPVertex;
- 
+  
+  /*! Hook to check for RNN features in SG */
+  bool m_sgContainsRnn;
+  bool m_sgContainsTrigPhoton;
   // Properties  
   ToolHandle<Trig::TrigDecisionTool> m_trigdec;
   ToolHandle<Trig::ITrigEgammaMatchingTool> m_matchTool;
@@ -168,7 +175,11 @@ protected:
   float getNPVtx(){return m_nPVertex;}
   float getNGoodVertex(){return m_nGoodVertex;}
  
-  /* trig rings and offline rings helper method for feature extraction from xaod */
+  /* Protection for Holders not in AOD */
+  bool getSGContainsRnn() { return m_sgContainsRnn;}
+  bool getSGContainsTrigPhoton() { return m_sgContainsTrigPhoton;}
+
+  /* trig rings and offline rings helper method for feature extraction from xaod */ 
   bool getCaloRings( const xAOD::Electron *, std::vector<float> & );
   bool getTrigCaloRings( const xAOD::TrigEMCluster *, std::vector<float> & );
   void parseCaloRingsLayers( unsigned layer, unsigned &minRing, unsigned &maxRing, std::string &caloLayerName);
diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/TrigEgammaNavBaseTool.h b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/TrigEgammaNavBaseTool.h
index 9cf68acb3717aa4655cd365fda3033ded0b314b1..eb2bdcbc309890eff264fc5ae4a289abef0e8a3d 100755
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/TrigEgammaNavBaseTool.h
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/TrigEgammaNavBaseTool.h
@@ -26,6 +26,8 @@
 #include "xAODTracking/TrackParticleContainer.h"
 #include "xAODTracking/TrackParticleAuxContainer.h"
 #include "xAODTrigCalo/TrigEMCluster.h"
+#include "xAODTrigRinger/TrigRNNOutput.h"
+#include "xAODTrigRinger/TrigRNNOutputContainer.h"
 #include "xAODCaloEvent/CaloClusterContainer.h"
 #include "xAODCaloEvent/CaloClusterAuxContainer.h"
 #include "xAODJet/JetContainer.h"
diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/TrigEgammaNavTPBaseTool.h b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/TrigEgammaNavTPBaseTool.h
index 5b8abb1c6ae13916e96299d36594bd56fb63ee6f..4a38f6549220a420044e6ee8a70407bc57fa4c0d 100644
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/TrigEgammaNavTPBaseTool.h
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/TrigEgammaAnalysisTools/TrigEgammaNavTPBaseTool.h
@@ -25,6 +25,8 @@
 #include "xAODTracking/TrackParticleContainer.h"
 #include "xAODTracking/TrackParticleAuxContainer.h"
 #include "xAODTrigCalo/TrigEMCluster.h"
+#include "xAODTrigRinger/TrigRNNOutput.h"
+#include "xAODTrigRinger/TrigRNNOutputContainer.h"
 #include "xAODCaloEvent/CaloClusterContainer.h"
 #include "xAODCaloEvent/CaloClusterAuxContainer.h"
 #include "xAODJet/JetContainer.h"