diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/T_AnalysisConfig_Tier0.h b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/T_AnalysisConfig_Tier0.h
index fb00096849684bbdcd05e16016e10d4a6da2aa16..76fe7f8741c27fcebe0ff7d168e2050ce4d88a23 100644
--- a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/T_AnalysisConfig_Tier0.h
+++ b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/T_AnalysisConfig_Tier0.h
@@ -1,6 +1,6 @@
 // emacs: this is -*- c++ -*-
 //
-//   @file    T_AnalysisConfig_Tier0.h        
+//   @file    T_AnalysisConfig_Tier0.h
 //
 //            baseclass template so that we can use in different contexts 
 //            in different ways in the monitoring 
@@ -16,8 +16,9 @@
 //
 // 
 //   Copyright (C) 2014 M.Sutton (sutt@cern.ch)    
+//   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 //
-//   $Id: T_AnalysisConfig_Tier0.h  v0.0   Wed 28 Oct 2014 02:47:05 CET sutt $
+//   $Id: T_AnalysisConfig_Tier0.h  Tue 16 May 2017 09:28:55 CEST sutt $
 
 #ifndef TrigInDetAnalysisExample_T_AnalysisConfig_Tier0_H
 #define TrigInDetAnalysisExample_T_AnalysisConfig_Tier0_H
@@ -148,7 +149,8 @@ public:
     m_NRois(0),
     m_NRefTracks(0),
     m_NTestTracks(0),
-    m_runPurity(false)
+    m_runPurity(false),
+    m_shifter(false)
   {
     m_event = new TIDA::Event();
     m_chainNames.push_back(testChainName);
@@ -172,6 +174,8 @@ public:
 
   void setRunPurity( bool b ) { m_runPurity=b; }
 
+  void setShifter( bool b )    { m_shifter=b; }
+
   void useBeamCondSvc( bool b ) { m_useBeamCondSvc = b; }
 
 public:
@@ -1069,6 +1073,7 @@ protected:
         // m_provider->msg(MSG::VERBOSE) << " Offline tracks " << endmsg;
 
         if ( m_doOffline ) {
+
 #         ifdef XAODTRACKING_TRACKPARTICLE_H
           if ( m_provider->evtStore()->template contains<xAOD::TrackParticleContainer>("InDetTrackParticles") ) {
             this->template selectTracks<xAOD::TrackParticleContainer>( m_selectorRef, "InDetTrackParticles" );
@@ -1331,7 +1336,7 @@ protected:
 
 
       
-      if ( name().find("Shifter")!=std::string::npos ) {
+      if ( name().find("Shifter")!=std::string::npos || m_shifter ) {
 	/// shifter histograms - do not encode chain names
 	if      ( m_chainNames.at(ic).tail().find("_FTF") != std::string::npos )              mongroup = folder_name + "/FTF";
 	else if ( m_chainNames.at(ic).tail().find("_IDTrig") != std::string::npos || 
@@ -1486,6 +1491,8 @@ protected:
 
   bool m_runPurity;
 
+  bool m_shifter;
+
 };
 
 
diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/TrigTestBase.h b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/TrigTestBase.h
index f85ae4c8e51bd00b603100ec199c3a953ec47ab0..01b23647325aa6870c724c880ffd6b48335b8909 100644
--- a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/TrigTestBase.h
+++ b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/TrigTestBase.h
@@ -155,6 +155,9 @@ protected:
   /// also run purity analyses
   bool m_runPurity;
 
+  /// determine whether this should be treated as a shifter chain
+  bool m_shifter;
+
   /// max number of shifter chains to use - must be < 2 at the moment
   int m_shifterChains;
 
diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/TrigTestBase.cxx b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/TrigTestBase.cxx
index cd5d6d8076e591e8e48c7cd8d012817e400fd30d..3596744f1199487bece4027edc61c158e1e7fb00 100644
--- a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/TrigTestBase.cxx
+++ b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/TrigTestBase.cxx
@@ -35,6 +35,7 @@ TrigTestBase::TrigTestBase(const std::string & type, const std::string & name, c
      m_useHighestPT(false),
      m_vtxIndex(-1),
      m_runPurity(false),
+     m_shifter(false),
      m_shifterChains(1),
      m_sliceTag("")
 {
@@ -70,22 +71,15 @@ TrigTestBase::TrigTestBase(const std::string & type, const std::string & name, c
   declareProperty( "trtHitsOffline",    m_trtHitsOffline    = -2 );
   declareProperty( "strawHitsOffline",  m_strawHitsOffline  = -2 );
 
-
-  //  declareProperty( "phiWidth", m_phiWidth = 0.1 );
-  //  declareProperty( "etaWidth", m_etaWidth = 0.1 );
-  //  declareProperty( "zedWidth", m_zedWidth = 168 );
-
   declareProperty( "matchR",   m_matchR   = 0.1 );
   declareProperty( "matchPhi", m_matchPhi = 0.1 );
 
-  // declareProperty( "chainNames",        m_chainNames );
   declareProperty( "ntupleChainNames",  m_ntupleChainNames );
   declareProperty( "releaseMetaData",   m_releaseMetaData );
 
   declareProperty( "buildNtuple",   m_buildNtuple = false );
   declareProperty( "mcTruth",       m_mcTruth = false );
 
-  // declareProperty( "outputFileName", m_outputFileName = "TrkNtuple.root");
   declareProperty( "AnalysisConfig", m_analysis_config = "Ntuple");
 
   declareProperty( "SelectTruthPdgId", m_selectTruthPdgId = 0 );
@@ -96,6 +90,8 @@ TrigTestBase::TrigTestBase(const std::string & type, const std::string & name, c
   declareProperty( "VtxIndex",         m_vtxIndex = -1 );
 
   declareProperty( "RunPurity",        m_runPurity = false );
+  declareProperty( "Shifter",          m_shifter = false );
+
   declareProperty( "ShifterChains",    m_shifterChains = 1 );
 
 
@@ -161,14 +157,11 @@ StatusCode TrigTestBase::book(bool newEventsBlock, bool newLumiBlock, bool newRu
 
 
 
-#ifdef ManagedMonitorToolBase_Uses_API_201401
-#if 0
-  // #ifndef ManagedMonitorToolBase_CXX
+#ifdef ManagedMonitorToolBase_Uses_API_201704
   bool newEventsBlock = newEventsBlockFlag();
   bool newLumiBlock   = newLumiBlockFlag();
   bool newRun         = newRunFlag();
 #endif
-#endif
 
 
   msg(MSG::DEBUG) << "TrigTestBase::book() buildNtuple " << m_buildNtuple
@@ -242,8 +235,6 @@ StatusCode TrigTestBase::book(bool newEventsBlock, bool newLumiBlock, bool newRu
 
       while ( chainitr!=m_ntupleChainNames.end() ) {
   
-       	//	if ( shifter_ftf>1 && shifter_efid>1 ) break;
-
 	/// get chain
         ChainString chainName = (*chainitr);
 
@@ -297,7 +288,7 @@ StatusCode TrigTestBase::book(bool newEventsBlock, bool newLumiBlock, bool newRu
 	    int shifterChains = m_shifterChains;
 	    if ( chainName.vtx()=="" ) shifterChains = ( m_shifterChains>1 ? 1 : m_shifterChains );
 	    
-	    if ( m_sliceTag.find("Shifter")!=std::string::npos ) { 
+	    if ( m_sliceTag.find("Shifter")!=std::string::npos || m_shifter ) { 
 	      /// shifter histograms 
 	      if ( chainName.tail().find("_FTF")!=std::string::npos ) { 
 		/// FTF chain
@@ -361,6 +352,7 @@ StatusCode TrigTestBase::book(bool newEventsBlock, bool newLumiBlock, bool newRu
 								    new Analysis_Tier0( m_chainNames[i], m_pTCut, m_etaCut, m_d0Cut, m_z0Cut ) );
 
 	analysis->setRunPurity(m_runPurity);
+	analysis->setShifter(m_shifter);
       
         m_sequences.push_back( analysis );
 
@@ -467,11 +459,8 @@ StatusCode TrigTestBase::proc(bool /*endOfEventsBlock*/, bool /*endOfLumiBlock*/
 #endif
   // StatusCode TrigTestBase::procHistograms() {
 
-#ifdef ManagedMonitorToolBase_Uses_API_201401
-#if 0
-  // #ifndef ManagedMonitorToolBase_CXX
+#ifdef ManagedMonitorToolBase_Uses_API_201704
   bool endOfRun       = endOfRunFlag();
-#endif
 #endif
 
   msg(MSG::INFO) << " ----- enter proc() ----- " << endmsg;
diff --git a/Trigger/TrigMonitoring/TrigIDtrkMonitoring/python/TrigIDtrkMonitoringConfig.py b/Trigger/TrigMonitoring/TrigIDtrkMonitoring/python/TrigIDtrkMonitoringConfig.py
index 69e3466e8a7e007669d19521175fb49909dff9d9..3233daa53420f1a447d42ad9a5a166daa20e2541 100644
--- a/Trigger/TrigMonitoring/TrigIDtrkMonitoring/python/TrigIDtrkMonitoringConfig.py
+++ b/Trigger/TrigMonitoring/TrigIDtrkMonitoring/python/TrigIDtrkMonitoringConfig.py
@@ -105,17 +105,18 @@ def TrigIDtrkMonitoringTool():
 		tidaegammapurity = TrigTestBase(name = "IDEgammaPurityTool",
 					       histoPathBase = "/Trigger/HLT")
 		tidaegammapurity.AnalysisConfig = "Tier0"
-		tidaegammapurity.SliceTag = "HLT/TRIDT/EgammaPurity/Shifter"
+		tidaegammapurity.SliceTag = "HLT/TRIDT/EgammaPurity/Expert"
 		tidaegammapurity.UseHighestPT = True
 		tidaegammapurity.RunPurity = True
 		# tidabase.OutputLevel = DEBUG
+		tidaegammapurity.Shifter = True
 		tidaegammapurity.ntupleChainNames += [
 			"Offline",
-			"HLT_e26_lhtight_idperf:InDetTrigTrackingxAODCnv_Electron_FTF",
-			"HLT_e26_lhtight_idperf:InDetTrigTrackingxAODCnv_Electron_IDTrig",
+		        "HLT_e26_lhtight_idperf:InDetTrigTrackingxAODCnv_Electron_FTF",
+		        "HLT_e26_lhtight_idperf:InDetTrigTrackingxAODCnv_Electron_IDTrig",
                         # HI chains 
-			"HLT_e15_medium_ion_idperf_L1EM12:InDetTrigTrackingxAODCnv_Electron_FTF",
-			"HLT_e15_medium_ion_idperf_L1EM12:InDetTrigTrackingxAODCnv_Electron_IDTrig",
+		        "HLT_e15_medium_ion_idperf_L1EM12:InDetTrigTrackingxAODCnv_Electron_FTF",
+		        "HLT_e15_medium_ion_idperf_L1EM12:InDetTrigTrackingxAODCnv_Electron_IDTrig",
 			"HLT_e.*_idperf:InDetTrigTrackingxAODCnv_Electron_FTF",
 			"HLT_e.*_idperf:InDetTrigTrackingxAODCnv_Electron_IDTrig"
 			]
@@ -173,18 +174,19 @@ def TrigIDtrkMonitoringTool():
 		tidamuonpurity = TrigTestBase(name = "IDMuonPurityTool",
 					histoPathBase = "/Trigger/HLT")
 		tidamuonpurity.AnalysisConfig = "Tier0"
-		tidamuonpurity.SliceTag = "HLT/TRIDT/MuonPurity/Shifter"
+		tidamuonpurity.SliceTag = "HLT/TRIDT/MuonPurity/Expert"
 		tidamuonpurity.UseHighestPT = True
 		tidamuonpurity.RunPurity = True
+		tidamuonpurity.Shifter = True
 		tidamuonpurity.ntupleChainNames += [
 			"Offline",
-			"HLT_mu20_idperf:InDetTrigTrackingxAODCnv_Muon_IDTrig",
-			"HLT_mu20_idperf:InDetTrigTrackingxAODCnv_Muon_FTF",
+		        "HLT_mu20_idperf:InDetTrigTrackingxAODCnv_Muon_IDTrig",
+		        "HLT_mu20_idperf:InDetTrigTrackingxAODCnv_Muon_FTF",
                         # HI chains 
-			"HLT_mu6_idperf:InDetTrigTrackingxAODCnv_Muon_FTF",
-			"HLT_mu6_idperf:InDetTrigTrackingxAODCnv_Muon_IDTrig",
-			"HLT_mu8_idperf:InDetTrigTrackingxAODCnv_Muon_FTF",
-			"HLT_mu8_idperf:InDetTrigTrackingxAODCnv_Muon_IDTrig",
+			# "HLT_mu6_idperf:InDetTrigTrackingxAODCnv_Muon_FTF",
+		        # "HLT_mu6_idperf:InDetTrigTrackingxAODCnv_Muon_IDTrig",
+		        # "HLT_mu8_idperf:InDetTrigTrackingxAODCnv_Muon_FTF",
+		        # "HLT_mu8_idperf:InDetTrigTrackingxAODCnv_Muon_IDTrig",
 			"HLT_mu.*_idperf:InDetTrigTrackingxAODCnv_Muon_FTF",
 			"HLT_mu.*_idperf:InDetTrigTrackingxAODCnv_Muon_IDTrig"
 			]
@@ -240,14 +242,15 @@ def TrigIDtrkMonitoringTool():
 		tidataupurity = TrigTestBase(name = "IDTauPurityTool",
 					    histoPathBase = "/Trigger/HLT")
 		tidataupurity.AnalysisConfig = "Tier0"
-		tidataupurity.SliceTag = "HLT/TRIDT/TauPurity/Shifter"
+		tidataupurity.SliceTag = "HLT/TRIDT/TauPurity/Expert"
 		tidataupurity.UseHighestPT = True
 		tidataupurity.RunPurity = True
+		tidataupurity.Shifter = True
 		tidataupurity.ntupleChainNames += [
 			"Offline",
 #			"HLT_tau25_idperf_tracktwo:key=InDetTrigTrackingxAODCnv_TauCore_FTF:roi=forID1",
-			"HLT_tau25_idperf_tracktwo:key=InDetTrigTrackingxAODCnv_Tau_IDTrig:roi=forID3",
-			"HLT_tau25_idperf_tracktwo:key=InDetTrigTrackingxAODCnv_TauIso_FTF:roi=forID3",
+#			"HLT_tau25_idperf_tracktwo:key=InDetTrigTrackingxAODCnv_Tau_IDTrig:roi=forID3",
+#			"HLT_tau25_idperf_tracktwo:key=InDetTrigTrackingxAODCnv_TauIso_FTF:roi=forID3",
 			"HLT_tau.*_idperf_tracktwo:key=InDetTrigTrackingxAODCnv_Tau_IDTrig:roi=forID3",
 			"HLT_tau.*_idperf_tracktwo:key=InDetTrigTrackingxAODCnv_TauIso_FTF:roi=forID3"
 			]
@@ -304,7 +307,7 @@ def TrigIDtrkMonitoringTool():
 		tidabjetpurity = TrigTestBase(name = "IDBjetPurityerTool",
 					     histoPathBase = "/Trigger/HLT")
 		tidabjetpurity.AnalysisConfig = "Tier0"
-		tidabjetpurity.SliceTag = "HLT/TRIDT/BjetPurity/Shifter"
+		tidabjetpurity.SliceTag = "HLT/TRIDT/BjetPurity/Expert"
 		tidabjetpurity.RunPurity = True
 		tidabjetpurity.ntupleChainNames += [
 			"Offline",