diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/EfficiencyTool.cxx b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/EfficiencyTool.cxx
index 2971c3c3e9aab9bbaca402ee199354cb2a1bc55b..9c089e3231cd46dd753e1616ff3019af586b12b0 100644
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/EfficiencyTool.cxx
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/EfficiencyTool.cxx
@@ -5,6 +5,7 @@
 /**********************************************************************
  **********************************************************************/
 #include "TrigEgammaAnalysisTools/EfficiencyTool.h"
+#include "TrigEgammaAnalysisTools/ValidationException.h"
 
 #include "xAODEventInfo/EventInfo.h"
 
@@ -48,17 +49,30 @@ bool EfficiencyTool::analyseIsEMLH(const xAOD::Electron *eg, const std::string p
     const std::string fail = "Fail" + pidword;
     const std::string ineff = "Ineff" + pidword;
 
-    unsigned int isem = eg->selectionisEM(pidword);
-
-    bool failIsEMLH = false;
-    for (int ii = 0; ii < 11; ii++) {
-        if ((isem >> ii) & 0x1) {
-            failIsEMLH = true;
-            hist1(fail)->Fill(ii + 0.5);
-            hist1(ineff)->Fill(ii + 3.5, 1);
-        }
+    bool failIsEMLH = true;
+    unsigned int isem = 9999;
+    try{
+	ATH_MSG_DEBUG("Running selectionisEM("<<pidword<<")");
+	isem = eg->selectionisEM(pidword);
+
+	failIsEMLH = false;
+	for (int ii = 0; ii < 11; ii++) {
+	    if ((isem >> ii) & 0x1) {
+		failIsEMLH = true;
+		hist1(fail)->Fill(ii + 0.5);
+		hist1(ineff)->Fill(ii + 3.5, 1);
+	    }
+	}
+    } catch (const ValidationException &e) {
+	ATH_MSG_WARNING("Exception thrown: " << e.msg() );
+	ATH_MSG_WARNING("Is " << pidword << " is a valid one? returning failed....");
+	failIsEMLH = true;
+    } catch(...) {
+	ATH_MSG_WARNING("Unknown exception caught in analyseIsEMLH ... Is " << pidword << " is a valid one? returning failed....");
+	failIsEMLH = true;
     }
     return failIsEMLH;
+
 }
 
 bool EfficiencyTool::analyseIsEM(const xAOD::Electron *eg, const std::string pid)
@@ -76,7 +90,18 @@ bool EfficiencyTool::analyseIsEM(const xAOD::Electron *eg, const std::string pid
     bool failtrt = false;
     bool failisem = false;
 
-    unsigned int isem = eg->selectionisEM(pidword);
+    unsigned int isem = 9999;
+    try{
+	isem = eg->selectionisEM(pidword);
+    } catch (const ValidationException &eg) {
+	ATH_MSG_WARNING("Exception thrown: " << eg.msg() );
+	ATH_MSG_WARNING("Is " << pidword << " is a valid one? returning failed....");
+	return(true);
+    } catch(...) {
+	ATH_MSG_WARNING("Unknown exception caught in analyseIsEMLH ... Is " << pidword << " is a valid one? returning failed....");
+	return(true);
+    }
+
 
     for (int ii = 0; ii < 29; ii++) {
         if ((isem >> ii) & 0x1) {
@@ -438,7 +463,7 @@ void EfficiencyTool::fillEfficiency(const std::string dir,bool isPassed,const fl
 
     float eta = eg->caloCluster()->etaBE(2);
     float phi = eg->phi();
-    float pt = eg->pt();
+    float pt = eg->pt()/1e3;
     float avgmu=getAvgMu();
     float npvtx=getNPVtx();
     ATH_MSG_DEBUG("Mu " << avgmu << " " << getAvgOnlineMu() << " "  << getAvgOfflineMu()); 
@@ -533,6 +558,12 @@ StatusCode EfficiencyTool::toolExecute(const std::string basePath,const TrigInfo
         else if(pairObj.first->type()==xAOD::Type::Photon){
             float et = getCluster_et(pairObj.first)/1e3;
             if(et < info.trigThrHLT-5.0) continue; // return StatusCode::SUCCESS;
+            if(boost::contains(info.trigName,"icalovloose")) {
+                if (getIsolation_topoetcone20(pairObj.first)/getCluster_et(pairObj.first) >= 0.065) continue; // pass FixedCutLoose offline isolation
+            }
+            else {
+                if ((getIsolation_topoetcone40(pairObj.first)-2450.0)/getCluster_et(pairObj.first) >= 0.022) continue; // pass FixedCutTightCaloOnly offline isolation
+            }
         } // Offline photon
 
 
diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaAnalysisBaseTool.cxx b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaAnalysisBaseTool.cxx
index 95a8cfd5eb2e666432b8bf5626e405ca86d8e667..1d7145df0c8220c53e37a7ac3b59479cc698f2e2 100644
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaAnalysisBaseTool.cxx
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaAnalysisBaseTool.cxx
@@ -237,8 +237,8 @@ StatusCode TrigEgammaAnalysisBaseTool::execute() {
         return StatusCode::FAILURE;
     } catch(...) {
         sc.ignore();
-        ATH_MSG_ERROR("Unknown exception caught, while filling histograms");
-        return StatusCode::FAILURE;
+        ATH_MSG_WARNING("Unknown exception caught, while filling histograms");
+        return StatusCode::SUCCESS;
     }
     return sc;
 }
@@ -411,7 +411,14 @@ void TrigEgammaAnalysisBaseTool::parseTriggerName(const std::string trigger, std
             pidname = defaultPid;
             etcut=true;
         }
-        else pidname = getProbePid(strs.at(1));
+        else {
+	    if (type == "electron" && boost::contains(trigger, "ion")){
+		    ATH_MSG_DEBUG("Heavy ion electron chain being used. Using LHMediumHI tune for offline.");
+		        pidname="LHMediumHI";
+	    } else {
+		pidname = getProbePid(strs.at(1));
+	    }
+	}
 
         //Get the L1 information
 
diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavBaseTool.cxx b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavBaseTool.cxx
index 0439ae6eb2bb8cb6bcb8101aa605a4eac43b2d76..8ae71d4a14294113e1e0674b4cb7019fe87ff3ea 100644
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavBaseTool.cxx
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavBaseTool.cxx
@@ -132,6 +132,7 @@ bool TrigEgammaNavBaseTool::EventWiseSelection( ){
         if(ApplyElectronPid(eg,"LHLoose")) hist1(m_anatype+"_electrons")->AddBinContent(4);
         if(ApplyElectronPid(eg,"LHMedium")) hist1(m_anatype+"_electrons")->AddBinContent(5);
         if(ApplyElectronPid(eg,"LHTight")) hist1(m_anatype+"_electrons")->AddBinContent(6); 
+        if(ApplyElectronPid(eg,"LHMediumHI")) hist1(m_anatype+"_electrons")->AddBinContent(7); 
     }
    
     //Calculate number of vertex 
@@ -154,6 +155,7 @@ StatusCode TrigEgammaNavBaseTool::executeNavigation( const TrigInfo info ){
 
 bool TrigEgammaNavBaseTool::ApplyElectronPid(const xAOD::Electron *eg, const std::string pidname){
     
+    ATH_MSG_DEBUG("Applying Electron PID with pidname =  " << pidname);
     if (pidname == "Tight"){
         bool accept = (bool) m_electronIsEMTool[0]->accept(eg);
         return static_cast<bool>(accept);
@@ -178,6 +180,10 @@ bool TrigEgammaNavBaseTool::ApplyElectronPid(const xAOD::Electron *eg, const std
         bool accept = (bool) m_electronLHTool[2]->accept(eg);
         return static_cast<bool>(accept);
     }
+    else if (pidname == "LHMediumHI"){
+        bool accept = (bool) m_electronLHTool[3]->accept(eg);
+        return static_cast<bool>(accept);
+    }
     else ATH_MSG_DEBUG("No Pid tool, continue without PID");
     return false;
 }
@@ -189,6 +195,7 @@ StatusCode TrigEgammaNavBaseTool::executeElectronNavigation( std::string trigIte
   ATH_MSG_DEBUG("Apply navigation selection "); 
 
 
+
   const std::string decor="is"+pidname;
   for(const auto& eg : *m_offElectrons ){
       const HLT::TriggerElement *te = nullptr;
@@ -210,7 +217,11 @@ StatusCode TrigEgammaNavBaseTool::executeElectronNavigation( std::string trigIte
       }
 
       if(m_forcePidSelection){///default is true
-        if(!ApplyElectronPid(eg,pidname)) continue;
+        if(!ApplyElectronPid(eg,pidname)){
+	    ATH_MSG_DEBUG("Fails ElectronID "<< pidname);
+	    continue;
+	}
+	ATH_MSG_DEBUG("Passes ElectronID "<< pidname);
       }
 
       if (m_forceProbeIsolation) {///default is false
diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPBaseTool.cxx b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPBaseTool.cxx
index 839ea908cc332e542d208dc00d5d0e2157c2be70..4dac467c9006890f13a19afe2a7ef296c5b30d36 100644
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPBaseTool.cxx
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPBaseTool.cxx
@@ -380,7 +380,7 @@ void TrigEgammaNavTPBaseTool::DressPid(const xAOD::Electron *eg){
         const std::string pidname="is"+m_isemname[ipid];
         eg->auxdecor<bool>(pidname)=static_cast<bool>(accept);
     }
-    for(int ipid=0;ipid<3;ipid++){
+    for(int ipid=0;ipid<2;ipid++){
         bool accept = (bool) m_electronLHTool[ipid]->accept(eg);
         const std::string pidname="is"+m_lhname[ipid];
         eg->auxdecor<bool>(pidname)=static_cast<bool>(accept);
@@ -414,6 +414,10 @@ bool TrigEgammaNavTPBaseTool::ApplyElectronPid(const xAOD::Electron *eg, const s
         bool accept = (bool) m_electronLHTool[2]->accept(eg);
         return static_cast<bool>(accept);
     }
+    else if (pidname == "LHMediumHI"){
+        bool accept = (bool) m_electronLHTool[3]->accept(eg);
+        return static_cast<bool>(accept);
+    }
     else ATH_MSG_DEBUG("No Pid tool, continue without PID");
     return false;
 }
diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/python/TrigEgammaAnalysisToolsConfig.py b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/python/TrigEgammaAnalysisToolsConfig.py
index d9ba5f06a2e63ccb1f91045af892cc51234e22ae..2159a9dd78156d32bf3c67810a0ee605bc4ddf7b 100644
--- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/python/TrigEgammaAnalysisToolsConfig.py
+++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/python/TrigEgammaAnalysisToolsConfig.py
@@ -29,18 +29,21 @@ MediumElectronSelector            = CfgMgr.AsgElectronIsEMSelector("T0HLTMediumE
 TightElectronSelector             = CfgMgr.AsgElectronIsEMSelector("T0HLTTightElectronSelector")
 LooseLHSelector                   = CfgMgr.AsgElectronLikelihoodTool("T0HLTLooseLHSelector")
 MediumLHSelector                  = CfgMgr.AsgElectronLikelihoodTool("T0HLTMediumLHSelector")
+MediumLHHISelector                  = CfgMgr.AsgElectronLikelihoodTool("T0HLTMediumLHHISelector")
 TightLHSelector                   = CfgMgr.AsgElectronLikelihoodTool("T0HLTTightLHSelector")
 LooseElectronSelector.ConfigFile  = "ElectronPhotonSelectorTools/offline/mc15_20150712/ElectronIsEMLooseSelectorCutDefs.conf"
 MediumElectronSelector.ConfigFile = "ElectronPhotonSelectorTools/offline/mc15_20150712/ElectronIsEMMediumSelectorCutDefs.conf"
 TightElectronSelector.ConfigFile  = "ElectronPhotonSelectorTools/offline/mc15_20150712/ElectronIsEMTightSelectorCutDefs.conf"
 LooseLHSelector.ConfigFile        = "ElectronPhotonSelectorTools/offline/mc16_20170828/ElectronLikelihoodLooseOfflineConfig2017_CutBL_Smooth.conf"
 MediumLHSelector.ConfigFile       = "ElectronPhotonSelectorTools/offline/mc16_20170828/ElectronLikelihoodMediumOfflineConfig2017_Smooth.conf"
+MediumLHHISelector.ConfigFile       = "ElectronPhotonSelectorTools/offline/mc15_20160907_HI/ElectronLikelihoodMediumOfflineConfig2016_HI.conf"
 TightLHSelector.ConfigFile        = "ElectronPhotonSelectorTools/offline/mc16_20170828/ElectronLikelihoodTightOfflineConfig2017_Smooth.conf"
 ToolSvc+=LooseElectronSelector
 ToolSvc+=MediumElectronSelector
 ToolSvc+=TightElectronSelector
 ToolSvc+=LooseLHSelector
 ToolSvc+=MediumLHSelector
+ToolSvc+=MediumLHHISelector
 ToolSvc+=TightLHSelector
 
 
@@ -181,7 +184,7 @@ TrigEgammaNavTPJpsieeAnalysisTool = ToolFactory(TrigEgammaAnalysisToolsConf.Trig
         isEMResultNames=["Tight","Medium","Loose"],
         LHResultNames=["LHTight","LHMedium","LHLoose"],
         ElectronIsEMSelector =[TightElectronSelector,MediumElectronSelector,LooseElectronSelector],
-        ElectronLikelihoodTool =[TightLHSelector,MediumLHSelector,LooseLHSelector], 
+        ElectronLikelihoodTool =[TightLHSelector,MediumLHSelector,LooseLHSelector, MediumLHHISelector], 
         ZeeLowerMass=2,
         ZeeUpperMass=5,
         OfflineTagSelector='Tight', # 1=tight, 2=medium, 3=loose 
@@ -209,7 +212,7 @@ TrigEgammaNavAnalysisTool = ToolFactory(TrigEgammaAnalysisToolsConf.TrigEgammaNa
         #EmulationTool=EmulationTool,
         Tools=[EfficiencyTool,ResolutionTool,DistTool],
         ElectronIsEMSelector =[TightElectronSelector,MediumElectronSelector,LooseElectronSelector],
-        ElectronLikelihoodTool =[TightLHSelector,MediumLHSelector,LooseLHSelector], 
+        ElectronLikelihoodTool =[TightLHSelector,MediumLHSelector,LooseLHSelector,MediumLHHISelector], 
         IsEMLabels=IneffLabels,
         TriggerList=monitoring_electron + monitoring_photon,
         ForcePidSelection=True,