diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/CMakeLists.txt b/Trigger/TrigHypothesis/TrigEgammaHypo/CMakeLists.txt
index 44f4539d0405897cad8712e25ac9e914f6eb9d57..9c02c26512916780e1ae1075d3c9d8636cc56c7f 100644
--- a/Trigger/TrigHypothesis/TrigEgammaHypo/CMakeLists.txt
+++ b/Trigger/TrigHypothesis/TrigEgammaHypo/CMakeLists.txt
@@ -11,6 +11,7 @@ atlas_depends_on_subdirs( PUBLIC
                           Calorimeter/CaloUtils
                           Control/DataModel
                           Control/StoreGate
+			  Control/AthenaMonitoring  
                           Event/xAOD/xAODCaloEvent
                           Event/xAOD/xAODEgamma
                           Event/xAOD/xAODTracking
@@ -57,7 +58,7 @@ atlas_add_component( TrigEgammaHypo
                      src/*.cxx
                      src/components/*.cxx
                      INCLUDE_DIRS ${AIDA_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} CaloUtilsLib DataModel AthenaBaseComps StoreGateLib SGtests xAODCaloEvent xAODEgamma xAODTracking xAODTrigCalo xAODTrigEgamma GaudiKernel LumiBlockCompsLib PATCoreLib ElectronPhotonSelectorToolsLib TrkSurfaces VxVertex TrigCaloEvent TrigInDetEvent TrigParticle TrigSteeringEvent TrigInterfacesLib TrigT1Interfaces TrigTimeAlgsLib CaloEvent CxxUtils ITrackToVertex RecoToolInterfaces egammaEvent egammaMVACalibLib TrkCaloExtension TrigCaloRecLib TrigMissingEtEvent TrigNavigationLib DecisionHandlingLib AthViews )
+                     LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} CaloUtilsLib DataModel AthenaBaseComps StoreGateLib SGtests AthenaMonitoringLib xAODCaloEvent xAODEgamma xAODTracking xAODTrigCalo xAODTrigEgamma GaudiKernel LumiBlockCompsLib PATCoreLib ElectronPhotonSelectorToolsLib TrkSurfaces VxVertex TrigCaloEvent TrigInDetEvent TrigParticle TrigSteeringEvent TrigInterfacesLib TrigT1Interfaces TrigTimeAlgsLib CaloEvent CxxUtils ITrackToVertex RecoToolInterfaces egammaEvent egammaMVACalibLib TrkCaloExtension TrigCaloRecLib TrigMissingEtEvent TrigNavigationLib DecisionHandlingLib AthViews )
 
 # Install files from the package:
 atlas_install_headers( TrigEgammaHypo )
diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2ElectronFexMTConfig.py b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2ElectronFexMTConfig.py
index 179fcc3edb9202a60a0de95b439d0cbf13d0cfe7..7b4fee6ad2080cca47c37d287ecdc324ca0472e4 100644
--- a/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2ElectronFexMTConfig.py
+++ b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2ElectronFexMTConfig.py
@@ -10,19 +10,14 @@ from AthenaCommon.SystemOfUnits import GeV, mm
 
 from AthenaCommon.AppMgr import ToolSvc
 
+from AthenaMonitoring.GenericMonitoringTool import GenericMonitoringTool,defineHistogram
+
 # ---------------------------------------------------------------
 # class for common setups (like monitoring)
 class L2ElectronFexBase(TrigL2ElectronFexMT):
     __slots__ = []
     def __init__(self, name):
         super(L2ElectronFexBase,self).__init__(name)
-#        from TrigEgammaHypo.TrigL2ElectronHypoMonitoring import TrigL2ElectronFexValidationMonitoring, TrigL2ElectronFexOnlineMonitoring
-#        validation = TrigL2ElectronFexValidationMonitoring()
-#        online     = TrigL2ElectronFexOnlineMonitoring()
-#        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
-#        time = TrigTimeHistToolConfig("Time")
-
-#        self.AthenaMonTools = [ time, validation, online ]
 
         # Tracking cuts
         self.TrackPt = 1.0 * GeV
@@ -36,6 +31,21 @@ class L2ElectronFexBase(TrigL2ElectronFexMT):
         self.CaloTrackdEoverPLow  = 0.0
         self.CaloTrackdEoverPHigh = 999.0
 
+        from TriggerJobOpts.TriggerFlags import TriggerFlags
+        if 'Validation' in TriggerFlags.enableMonitoring() or 'Online' in  TriggerFlags.enableMonitoring():
+            monTool = GenericMonitoringTool('MonTool')
+            monTool.Histograms +=[defineHistogram('CaloTrackdEta', path='EXPERT', type='TH1F', title="L2Electron Hypo #Delta #eta between cluster and track;#Delta #eta;Nevents", xbins=80, xmin=-0.4, xmax=0.4) ]
+            monTool.Histograms +=[defineHistogram('CaloTrackdPhi', path='EXPERT', type='TH1F', title="L2Electron Hypo #Delta #phi between cluster and track;#Delta #phi;Nevents", xbins=80, xmin=-0.4, xmax=0.4) ]
+            monTool.Histograms +=[defineHistogram('CaloTrackEoverP', path='EXPERT', type='TH1F', title="L2Electron Hypo E/p;E/p;Nevents", xbins=120, xmin=0, xmax=12) ]
+            monTool.Histograms +=[defineHistogram('PtTrack', path='EXPERT', type='TH1F', title="L2Electron Hypo p_{T}^{track} [MeV];p_{T}^{track} [MeV];Nevents", xbins=50, xmin=0, xmax=100000) ]
+            monTool.Histograms +=[defineHistogram('PtCalo', path='EXPERT', type='TH1F', title="L2Electron Hypo p_{T}^{calo} [MeV];p_{T}^{calo} [MeV];Nevents", xbins=50, xmin=0, xmax=100000) ]
+            monTool.Histograms +=[defineHistogram('CaloEta',path='EXPERT',  type='TH1F', title="L2Electron Hypo #eta^{calo} ; #eta^{calo};Nevents", xbins=200, xmin=-2.5, xmax=2.5) ]
+            monTool.Histograms +=[defineHistogram('CaloPhi', path='EXPERT', type='TH1F', title="L2Electron Hypo #phi^{calo} ; #phi^{calo};Nevents", xbins=320, xmin=-3.2, xmax=3.2) ]
+            monTool.Histograms +=[defineHistogram('CaloTrackdEtaNoExtrapMon', path='EXPERT',type='TH1F', title="L2Electron Fex #Delta #eta between cluster and track;#Delta #eta;Nevents", xbins=80, xmin=-0.4, xmax=0.4) ]
+
+            self.MonTool = monTool
+
+ 
 # ---------------------------------------------------------------
 # TrigL2ElectronFex configurations
 # ---------------------------------------------------------------
diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigL2ElectronFexMT.cxx b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigL2ElectronFexMT.cxx
index 3749267d4d52da9c9ef1f56523c1ea9fa5cedad8..c8c7d5220c51247248f41dbda26c93e5cfbce6b2 100644
--- a/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigL2ElectronFexMT.cxx
+++ b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigL2ElectronFexMT.cxx
@@ -20,7 +20,6 @@
  **                 N.Berger Dec.06 - migrate to new steering (RG)
  **************************************************************************/
 
-#include "RecoToolInterfaces/IParticleCaloExtensionTool.h" 
 #include "TrkCaloExtension/CaloExtensionHelpers.h" 
 #include "TrigL2ElectronFexMT.h"
 #include "xAODTrigCalo/TrigEMClusterContainer.h"
@@ -34,50 +33,12 @@ inline const DataVector<xAOD::TrigElectron>** dvec_cast(SRC** ptr) {
 
 
 TrigL2ElectronFexMT::TrigL2ElectronFexMT(const std::string & name, ISvcLocator* pSvcLocator)
-    : AthAlgorithm(name, pSvcLocator),
-      m_caloExtensionTool("Trk::ParticleCaloExtensionTool/ParticleCaloExtensionTool"),
-      m_roiCollectionKey(""),
-      m_TrigEMClusterContainerKey(""),
-      m_TrackParticleContainerKey(""),
-      m_outputElectronsKey("")
-
+    : AthAlgorithm(name, pSvcLocator)
 {
-    declareProperty( "AcceptAll",            m_acceptAll  = false );
-    declareProperty( "ClusEt",              m_clusEtthr = 20.0*CLHEP::GeV );
-    declareProperty( "TrackPt",              m_trackPtthr = 5.0*CLHEP::GeV );
-    declareProperty( "CaloTrackdEtaNoExtrap",        m_calotrkdeta_noextrap );
-    declareProperty( "TrackPtHighEt",              m_trackPtthr = 2.0*CLHEP::GeV );
-    declareProperty( "CaloTrackdEtaNoExtrapHighEt",        m_calotrkdeta_noextrap_highet = 0);
-    declareProperty( "CaloTrackdETA",        m_calotrackdeta = 0);
-    declareProperty( "CaloTrackdPHI",        m_calotrackdphi = 0); 
-    declareProperty( "CaloTrackdEoverPLow",  m_calotrackdeoverp_low = 0);
-    declareProperty( "CaloTrackdEoverPHigh", m_calotrackdeoverp_high = 0);
-    declareProperty( "RCalBarrelFace",       m_RCAL = 1470.0*CLHEP::mm );
-    declareProperty( "ZCalEndcapFace",       m_ZCAL = 3800.0*CLHEP::mm );
-    declareProperty( "ParticleCaloExtensionTool",    m_caloExtensionTool);
-    declareProperty("TrackParticlesName", 
-                  m_TrackParticleContainerKey = std::string("Tracks"),
-                  "TrackParticle container");
-    declareProperty("ElectronsName", 
-                  m_outputElectronsKey = std::string("Electrons"),
-                  "Electron container");
-    declareProperty("RoIs", 
-                  m_roiCollectionKey = std::string("rois"),
-                  "RoI Collection");
-
-    declareProperty("TrigEMClusterName", 
-                  m_TrigEMClusterContainerKey = std::string("clusters"),
-                  "TrigEMCluster Container");
-
-
-
-    //    declareMonitoredStdContainer("PtCalo",m_calopt_mon);
-    //declareMonitoredStdContainer("PtTrack",m_trackpt_mon);
-    //declareMonitoredStdContainer("CaloTrackdEta",m_calotrackdeta_mon); 
-    //declareMonitoredStdContainer("CaloTrackdPhi",m_calotrackdphi_mon); 
-    //declareMonitoredStdContainer("CaloTrackEoverP",m_calotrackdeoverp_mon);
-    //declareMonitoredStdContainer("CaloTrackdEtaNoExtrapMon",m_calotrkdeta_noextrap_mon);
-    // initialize error counter
+
+  // TODO: Replace this with a .h property once Gaudi!385 has been merged
+  declareProperty("MonTool", m_monTool=VoidMonitoringTool(this), "Monitoring tool");
+
     m_extrapolator_failed = 0;
 }
 
@@ -90,13 +51,12 @@ StatusCode TrigL2ElectronFexMT::initialize()
 {
   ATH_MSG_DEBUG("Initialization:");
 
-
-  ATH_CHECK( m_roiCollectionKey.initialize() );
-
-  ATH_CHECK( m_TrigEMClusterContainerKey.initialize() );
-  ATH_CHECK( m_TrackParticleContainerKey.initialize() );
-  ATH_CHECK( m_outputElectronsKey.initialize() );
-
+  if (!m_monTool.empty()) {
+    ATH_MSG_DEBUG("Retrieving monTool");
+    CHECK(m_monTool.retrieve());
+  } else {
+    ATH_MSG_INFO("No monTool configured => NO MONITOING");
+  }
   // initialize error counter
   m_extrapolator_failed = 0;
 
@@ -119,6 +79,11 @@ StatusCode TrigL2ElectronFexMT::initialize()
   ATH_MSG_DEBUG("CaloTrackdEoverPLow  = " << m_calotrackdeoverp_low); 
   ATH_MSG_DEBUG("CaloTrackdEoverPHigh = " << m_calotrackdeoverp_high);
 
+ATH_CHECK( m_roiCollectionKey.initialize() );
+ATH_CHECK( m_TrigEMClusterContainerKey.initialize() );
+ATH_CHECK( m_TrackParticleContainerKey.initialize() );
+ATH_CHECK( m_outputElectronsKey.initialize() );
+
   return StatusCode::SUCCESS;
 }
 
@@ -135,14 +100,12 @@ StatusCode TrigL2ElectronFexMT::finalize()
 
 
 StatusCode TrigL2ElectronFexMT::execute() {
-
-  // Collection may be never used. Better only create if necessary
-  // NULL value is specially important to avoid crashs in monitoring
-  //m_trigElecColl = NULL;
+ using namespace Monitored;   
+ using namespace xAOD;   
 
   auto ctx = getContext();
 
-  auto trigElecColl =   SG::makeHandle (m_outputElectronsKey, ctx);
+  auto trigElecColl =   SG::makeHandle (m_outputElectronsKey, ctx);  
   ATH_CHECK( trigElecColl.record (std::make_unique<xAOD::TrigElectronContainer>(),
                            std::make_unique<xAOD::TrigEMClusterAuxContainer>()) );
 
@@ -197,6 +160,23 @@ StatusCode TrigL2ElectronFexMT::execute() {
   size_t coll_size = tracks->size();
   trigElecColl->reserve(coll_size);
 
+  // monitoring
+  std::vector<float> calotrkdeta_noextrap_mon; //!< monitor preselection between track eta and cluster before extrapolation 
+  std::vector<float> calotrackdeta_mon; 
+  std::vector<float> calotrackdphi_mon; 
+  std::vector<float> calotrackdeoverp_mon;
+  std::vector<float> trackpt_mon;
+  std::vector<float> calopt_mon;
+
+  auto mon1 = MonitoredCollection::declare("PtCalo", calopt_mon);
+  auto mon2 = MonitoredCollection::declare("PtTrack", trackpt_mon);
+  auto mon3 = MonitoredCollection::declare("CaloTrackdEta", calotrackdeta_mon);
+  auto mon4 = MonitoredCollection::declare("CaloTrackdPhi", calotrackdphi_mon);
+  auto mon5 = MonitoredCollection::declare("CaloTrackEoverP", calotrackdeoverp_mon);
+  auto mon6 = MonitoredCollection::declare("CaloTrackdEtaNoExtrapMon",  calotrkdeta_noextrap_mon);
+
+  auto mon = MonitoredScope::declare(m_monTool,  mon1, mon2, mon3, mon4, mon5, mon6);
+
   // loop over tracks
 
   unsigned int track_index=0;
@@ -220,7 +200,7 @@ StatusCode TrigL2ElectronFexMT::execute() {
 	if(!extrapolate(el_t2calo_clus,trkIter,etaAtCalo,phiAtCalo)){
               ATH_MSG_VERBOSE("extrapolator failed");
               continue; 
-          }
+	}
           else{
               ATH_MSG_VERBOSE("REGTEST: TrigElectron: cluster index = " << clusEL.index() <<
                       " track = "     << trkIter << " eta = " << etaAtCalo << " phi = " << phiAtCalo); 
@@ -232,12 +212,12 @@ StatusCode TrigL2ElectronFexMT::execute() {
                       etaAtCalo, phiAtCalo,  etoverpt,        
                       clusEL,
                       trackEL);
-              m_calotrackdeta_mon.push_back(trigElec->trkClusDeta()); 
-              m_calotrackdphi_mon.push_back(trigElec->trkClusDphi()); 
-              m_calotrackdeoverp_mon.push_back(trigElec->etOverPt());
-              m_trackpt_mon.push_back(getTkPt(trigElec));
-              m_calopt_mon.push_back(getCaloPt(trigElec));
-              m_calotrkdeta_noextrap_mon.push_back(calotrkdeta_noextrap);
+	      calotrackdeta_mon.push_back(trigElec->trkClusDeta()); 
+              calotrackdphi_mon.push_back(trigElec->trkClusDphi()); 
+              calotrackdeoverp_mon.push_back(trigElec->etOverPt());
+              trackpt_mon.push_back(getTkPt(trigElec));
+              calopt_mon.push_back(getCaloPt(trigElec));
+              calotrkdeta_noextrap_mon.push_back(calotrkdeta_noextrap);
           }
       }
       else {  
@@ -317,12 +297,12 @@ StatusCode TrigL2ElectronFexMT::execute() {
                   << " phiAtCalo = " << phiAtCalo << " phiAtCalo = " << trigElec->trkPhiAtCalo()
                   );
 
-          m_calotrackdeta_mon.push_back(trigElec->trkClusDeta()); 
-          m_calotrackdphi_mon.push_back(trigElec->trkClusDphi()); 
-          m_calotrackdeoverp_mon.push_back(trigElec->etOverPt());
-          m_trackpt_mon.push_back(getTkPt(trigElec));
-          m_calopt_mon.push_back(getCaloPt(trigElec));
-          m_calotrkdeta_noextrap_mon.push_back(calotrkdeta_noextrap);
+          calotrackdeta_mon.push_back(trigElec->trkClusDeta()); 
+          calotrackdphi_mon.push_back(trigElec->trkClusDphi()); 
+          calotrackdeoverp_mon.push_back(trigElec->etOverPt());
+          trackpt_mon.push_back(getTkPt(trigElec));
+          calopt_mon.push_back(getCaloPt(trigElec));
+          calotrkdeta_noextrap_mon.push_back(calotrkdeta_noextrap);
       }
       track_index++;
   }
diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigL2ElectronFexMT.h b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigL2ElectronFexMT.h
index 313588f5843ce9d03850522825c590d1e653cf46..9e85e478dc097c1048f893510de2b51144e83b71 100755
--- a/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigL2ElectronFexMT.h
+++ b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigL2ElectronFexMT.h
@@ -43,9 +43,11 @@
 #include "xAODTrigCalo/TrigEMCluster.h"
 #include "xAODTrigEgamma/TrigElectron.h"
 #include "xAODTrigEgamma/TrigElectronContainer.h"
+#include "RecoToolInterfaces/IParticleCaloExtensionTool.h" 
 
-namespace Trk
-{ class IParticleCaloExtensionTool; } 
+#include "AthenaMonitoring/GenericMonitoringTool.h"
+//namespace Trk
+//{ class IParticleCaloExtensionTool; } 
 
 /**
  * \class TrigL2ElectronFexMT 
@@ -57,12 +59,6 @@ namespace Trk
  * The TrigElectron conatiner will then be retrieved by the hypothesis algorithm TrigL2ElectronHypo
  * that will perform the corresponding L2 electron selection
  *
- * Cleanup / Update for Run2
- * Remove m_calo_algoID; m_trackalgoID -- only 1 type of track
- * Remove deta/dphi cluster -- this is checked at L2Calo
- * Remove track pt for TRT tracks -- TRT only not used
- * Remove m_calotrackdeta/dphiTRT -- not cutting on TRT tracks
- * calotrack deta/dphi and eoverp cuts flat (not as function of eta)
  */
 
 class TrigL2ElectronFexMT : public AthAlgorithm  {
@@ -79,29 +75,6 @@ class TrigL2ElectronFexMT : public AthAlgorithm  {
 
  private:
   
-  //tracking cut
-  float  m_trackPtthr;
-  float  m_trackPtthr_highet; //!< track pt cut for high et cluster (20 GeV)
-  float  m_clusEtthr; //!< cluster Et threshold for high et cuts
-  float m_calotrkdeta_noextrap; //!< preselection between track eta and cluster before extrapolation 
-  float m_calotrkdeta_noextrap_highet; //!< preselection between track eta and cluster before extrapolation for high et cluster
-  //calo-tracking cuts
-
-  float m_calotrackdeta; //!<  deta between calo and track
-  float m_calotrackdphi; //!<  dphi between calo and track
-  float m_calotrackdeoverp_low; //!<  E/p lower cut between calo and track
-  float m_calotrackdeoverp_high; //!<  E/p upper cut  between calo and track
-  
-  //radius and Z of calorimeter face
-  float m_RCAL;  //!<  radious of calorimeter face
-  float m_ZCAL;  //!<  Z of calorimeter face
-  
-  // build electrons for all tracks  
-  bool m_acceptAll;
-
-  // for extrapolating TrigInDetTracks to calorimeter surface
-  ToolHandle< Trk::IParticleCaloExtensionTool > m_caloExtensionTool; 
-
   // track-extrapolation error counter
   unsigned long m_extrapolator_failed;
 
@@ -117,18 +90,44 @@ class TrigL2ElectronFexMT : public AthAlgorithm  {
   }
 
   bool extrapolate(const xAOD::TrigEMCluster *, const xAOD::TrackParticle *, double &, double &);
+  
+   // Algorithm properties: the parameters are {this, <name>, <default value>, <documentation>}
+  Gaudi::Property<bool>  m_acceptAll  {this, "AcceptAll", false, "Build electrons for all tracks"};
+  Gaudi::Property<float> m_clusEtthr {this,  "ClusEt",  20.0*CLHEP::GeV , " lower limit on cluster Et"};
+  Gaudi::Property<float> m_trackPtthr {this,  "TrackPt",  5.0*CLHEP::GeV , "lower limit on TrackPt cut" };
+  Gaudi::Property<float> m_calotrkdeta_noextrap {this,  "CaloTrackdEtaNoExtrap",   0.5, "Upper limit on DEta between Calo cluster and Track for track preselection before extrapolation"};
+  Gaudi::Property<float> m_trackPtthr_highet  {this,  "TrackPtHighEt",  2.0*CLHEP::GeV , "lower limit on TrackPt cut High Et Cluster (20GeV)"};
+  Gaudi::Property<float> m_calotrkdeta_noextrap_highet {this,  "CaloTrackdEtaNoExtrapHighEt",  0, "upper limit on DEta between Calo cluster and Track for track preselection before extrapolation for High Et cluster (20GeV)"};
+  Gaudi::Property<float> m_calotrackdeta {this,  "CaloTrackdETA",    0, "Upper limit on DEta between Calo cluster and Track"};
+  Gaudi::Property<float> m_calotrackdphi {this,  "CaloTrackdPHI",     0, "Upper limit on DPhi between Calo cluster and Track"}; 
+  Gaudi::Property<float> m_calotrackdeoverp_low {this,  "CaloTrackdEoverPLow",  0, "lower limit on E(calo)/p(track)"};
+  Gaudi::Property<float> m_calotrackdeoverp_high {this,  "CaloTrackdEoverPHigh", 0, "upper limit on track E(calo)/p(track)"};
+  Gaudi::Property<float> m_RCAL {this,  "RCalBarrelFace",  1470.0*CLHEP::mm , "Radius of inner face of the barrel calorimeter"};
+  Gaudi::Property<float> m_ZCAL {this,  "ZCalEndcapFace",     3800.0*CLHEP::mm, "z of the inner face of endcap calorimeter"};
+  // Too be changed Public Tools depreciated
+  PublicToolHandle<Trk::IParticleCaloExtensionTool > m_caloExtensionTool {this,  "ParticleCaloExtensionTool",  "Trk::ParticleCaloExtensionTool/ParticleCaloExtensionTool", "Tool to extrapolate Track to Calo inner surface"};
+ 
+  SG::ReadHandleKey<TrigRoiDescriptorCollection> m_roiCollectionKey { this, 
+      "RoIs",                             // property name
+      "rois",                                                        // default value of StoreGate key
+      "input RoI Collection name"};
+  
+  SG::ReadHandleKey<xAOD::TrigEMClusterContainer> m_TrigEMClusterContainerKey{ this,
+      "TrigEMClusterName",       // property name
+      "clusters",                                                // default value of StoreGate key
+      "input TrigEMCluster Container name"};
+  
+  SG::ReadHandleKey<xAOD::TrackParticleContainer> m_TrackParticleContainerKey{ this,
+      "TrackParticlesName",         // property name
+      "Tracks",                                                  // default value of StoreGate key
+      "input TrackParticle container name"};
 
-  std::vector<float> m_calotrkdeta_noextrap_mon; //!< monitor preselection between track eta and cluster before extrapolation 
-  std::vector<float> m_calotrackdeta_mon; 
-  std::vector<float> m_calotrackdphi_mon; 
-  std::vector<float> m_calotrackdeoverp_mon;
-  std::vector<float> m_trackpt_mon;
-  std::vector<float> m_calopt_mon;
-
-  SG::ReadHandleKey<TrigRoiDescriptorCollection> m_roiCollectionKey;
-  SG::ReadHandleKey<xAOD::TrigEMClusterContainer> m_TrigEMClusterContainerKey;
-  SG::ReadHandleKey<xAOD::TrackParticleContainer> m_TrackParticleContainerKey;
-  SG::WriteHandleKey<xAOD::TrigElectronContainer> m_outputElectronsKey;
-};
+  SG::WriteHandleKey<xAOD::TrigElectronContainer> m_outputElectronsKey{ this,
+      "ElectronsName",                  // property name
+      "Electrons",                                             // default value of StoreGate key
+      "output Electron container name "};
 
+  ToolHandle<GenericMonitoringTool> m_monTool;
+  
+};  
 #endif