From 44c42bf673e2ea61edab4b6b5550dc372998335a Mon Sep 17 00:00:00 2001
From: Mark Hodgkinson <m.hodgkinson@sheffield.ac.uk>
Date: Thu, 26 Oct 2017 10:59:01 +0100
Subject: [PATCH] Delete all serial algorithms and tools, which were replaced
 with MT versions (which still work in serial mode). Also do some minor code
 updates to fix compilation errors that this causes. Minor update to main job
 options file, to use new PFLocalHadCal.py

---
 .../eflowRec/eflowRec/PFTrackSelector.h       |   2 +-
 .../eflowRec/eflowRec/eflowBuilder.h          |  49 --
 .../eflowRec/eflowCaloObjectBuilder.h         |  53 --
 .../eflowRec/eflowCellLevelSubtractionTool.h  | 107 ----
 .../eflowRec/eflowClusterCollectionTool.h     |  42 --
 .../eflowRec/eflowRec/eflowLCCalibTool.h      |  77 ---
 .../eflowRec/eflowMomentCalculatorTool.h      |  64 --
 .../eflowRec/eflowRec/eflowObjectBuilder.h    |  50 --
 .../eflowRec/eflowObjectCreatorTool.h         |  96 ---
 .../eflowRec/eflowRec/eflowPreparation.h      | 150 -----
 .../eflowRec/eflowRecoverSplitShowersTool.h   | 103 ----
 .../eflowRec/eflowVertexInformationSetter.h   |  42 --
 .../{eflowLocalHadCal.py => PFLocalHadCal.py} |  26 +-
 .../eflowRec/python/eflowCaloObjectBuilder.py |  68 ---
 .../python/eflowCaloObjectBuilderGetter.py    |  18 -
 .../python/eflowCaloObjectBuilderGetter_LC.py |  18 -
 .../eflowRec/python/eflowCaloSetup.py         |  87 ---
 .../python/eflowCellLevelSubtractionSetup.py  |  37 --
 .../eflowCellLevelSubtractionToolDefault.py   |  69 ---
 .../python/eflowLCCalibToolDefault.py         |  48 --
 .../python/eflowMomentCalculatorSetup.py      |  21 -
 .../eflowMomentCalculatorToolDefault.py       |  76 ---
 .../python/eflowObjectBuilderGetter.py        |  26 -
 .../python/eflowObjectBuilderGetter_LC.py     |  26 -
 .../python/eflowObjectBuilderSetup.py         |  82 ---
 .../python/eflowObjectCreatorToolDefault.py   |  43 --
 .../eflowRec/python/eflowPreparationGetter.py |  26 -
 .../python/eflowPreparationGetter_LC.py       |  26 -
 .../python/eflowRecoverSplitShowersSetup.py   |  58 --
 .../eflowRecoverSplitShowersToolDefault.py    |  18 -
 .../eflowRecoverSplitShowersToolDefault_LC.py |  18 -
 .../python/eflowSetupParticleCreator.py       |  51 --
 .../eflowRec/share/PFlowMTConfig.py           |  12 +-
 .../share/eflowJetMode_example_myAlgs.py      |  35 --
 .../share/eflowRec_config_MC15_JetETMiss.py   |  24 -
 .../eflowRec/share/eflowRec_jobOptions.py     |   3 +-
 .../eflowRec/share/run_ESDSerial.py           |  58 --
 .../share/run_eflowJetMode_example.py         |  83 ---
 .../eflowRec/src/PFTrackSelector.cxx          |   1 -
 .../src/components/eflowRec_entries.cxx       |  33 --
 Reconstruction/eflowRec/src/eflowBuilder.cxx  | 172 ------
 .../eflowRec/src/eflowCaloObjectBuilder.cxx   | 159 -----
 .../src/eflowCellLevelSubtractionTool.cxx     | 486 ---------------
 .../src/eflowClusterCollectionTool.cxx        |  80 ---
 .../eflowRec/src/eflowLCCalibTool.cxx         | 131 ----
 .../src/eflowMomentCalculatorTool.cxx         |  57 --
 .../eflowRec/src/eflowObjectBuilder.cxx       | 127 ----
 .../eflowRec/src/eflowObjectCreatorTool.cxx   | 501 ----------------
 .../eflowRec/src/eflowPreparation.cxx         | 559 ------------------
 .../src/eflowRecoverSplitShowersTool.cxx      | 302 ----------
 .../eflowRec/src/eflowSubtractor.cxx          |   1 -
 .../src/eflowVertexInformationSetter.cxx      |  77 ---
 52 files changed, 21 insertions(+), 4557 deletions(-)
 delete mode 100644 Reconstruction/eflowRec/eflowRec/eflowBuilder.h
 delete mode 100644 Reconstruction/eflowRec/eflowRec/eflowCaloObjectBuilder.h
 delete mode 100644 Reconstruction/eflowRec/eflowRec/eflowCellLevelSubtractionTool.h
 delete mode 100644 Reconstruction/eflowRec/eflowRec/eflowClusterCollectionTool.h
 delete mode 100644 Reconstruction/eflowRec/eflowRec/eflowLCCalibTool.h
 delete mode 100644 Reconstruction/eflowRec/eflowRec/eflowMomentCalculatorTool.h
 delete mode 100644 Reconstruction/eflowRec/eflowRec/eflowObjectBuilder.h
 delete mode 100644 Reconstruction/eflowRec/eflowRec/eflowObjectCreatorTool.h
 delete mode 100644 Reconstruction/eflowRec/eflowRec/eflowPreparation.h
 delete mode 100644 Reconstruction/eflowRec/eflowRec/eflowRecoverSplitShowersTool.h
 delete mode 100644 Reconstruction/eflowRec/eflowRec/eflowVertexInformationSetter.h
 rename Reconstruction/eflowRec/python/{eflowLocalHadCal.py => PFLocalHadCal.py} (88%)
 delete mode 100644 Reconstruction/eflowRec/python/eflowCaloObjectBuilder.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowCaloObjectBuilderGetter.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowCaloObjectBuilderGetter_LC.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowCaloSetup.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowCellLevelSubtractionSetup.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowCellLevelSubtractionToolDefault.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowLCCalibToolDefault.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowMomentCalculatorSetup.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowMomentCalculatorToolDefault.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowObjectBuilderGetter.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowObjectBuilderGetter_LC.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowObjectBuilderSetup.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowObjectCreatorToolDefault.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowPreparationGetter.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowPreparationGetter_LC.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowRecoverSplitShowersSetup.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowRecoverSplitShowersToolDefault.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowRecoverSplitShowersToolDefault_LC.py
 delete mode 100644 Reconstruction/eflowRec/python/eflowSetupParticleCreator.py
 delete mode 100644 Reconstruction/eflowRec/share/eflowJetMode_example_myAlgs.py
 delete mode 100644 Reconstruction/eflowRec/share/eflowRec_config_MC15_JetETMiss.py
 delete mode 100644 Reconstruction/eflowRec/share/run_ESDSerial.py
 delete mode 100644 Reconstruction/eflowRec/share/run_eflowJetMode_example.py
 delete mode 100644 Reconstruction/eflowRec/src/eflowBuilder.cxx
 delete mode 100644 Reconstruction/eflowRec/src/eflowCaloObjectBuilder.cxx
 delete mode 100644 Reconstruction/eflowRec/src/eflowCellLevelSubtractionTool.cxx
 delete mode 100644 Reconstruction/eflowRec/src/eflowClusterCollectionTool.cxx
 delete mode 100644 Reconstruction/eflowRec/src/eflowLCCalibTool.cxx
 delete mode 100644 Reconstruction/eflowRec/src/eflowMomentCalculatorTool.cxx
 delete mode 100644 Reconstruction/eflowRec/src/eflowObjectBuilder.cxx
 delete mode 100644 Reconstruction/eflowRec/src/eflowObjectCreatorTool.cxx
 delete mode 100644 Reconstruction/eflowRec/src/eflowPreparation.cxx
 delete mode 100644 Reconstruction/eflowRec/src/eflowRecoverSplitShowersTool.cxx
 delete mode 100644 Reconstruction/eflowRec/src/eflowVertexInformationSetter.cxx

diff --git a/Reconstruction/eflowRec/eflowRec/PFTrackSelector.h b/Reconstruction/eflowRec/eflowRec/PFTrackSelector.h
index 495255efe03..6a428af8ec1 100644
--- a/Reconstruction/eflowRec/eflowRec/PFTrackSelector.h
+++ b/Reconstruction/eflowRec/eflowRec/PFTrackSelector.h
@@ -7,12 +7,12 @@
 #include "StoreGate/DataHandle.h"
 
 #include "eflowRec/eflowRecTrack.h"
+#include "InDetTrackSelectionTool/IInDetTrackSelectionTool.h"
 #include "Particle/TrackParticleContainer.h"
 #include "xAODEgamma/ElectronContainer.h"
 #include "xAODMuon/MuonContainer.h"
 
 class eflowTrackExtrapolatorBaseAlgTool;
-namespace InDet { class IInDetTrackSelectionTool; }
 
 class PFTrackSelector : public AthAlgorithm {
 
diff --git a/Reconstruction/eflowRec/eflowRec/eflowBuilder.h b/Reconstruction/eflowRec/eflowRec/eflowBuilder.h
deleted file mode 100644
index 0dac11d1bfb..00000000000
--- a/Reconstruction/eflowRec/eflowRec/eflowBuilder.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef EFLOWREC_EFLOWBUILDER_H
-#define EFLOWREC_EFLOWBUILDER_H
-/********************************************************************
-
-NAME:     eflowBuilder.h
-PACKAGE:  offline/Reconstruction/eflowRec
-
-AUTHORS:  D.R.Tovey
-CREATED:  10th November, 2001
-
-********************************************************************/
-
-
-#include "AthenaBaseComps/AthAlgorithm.h"
-
-class StoreGateSvc;
-
-class eflowBuilder : public AthAlgorithm
-{
-
- public:
-
-  // contructor
-  eflowBuilder(const std::string& name, ISvcLocator* pSvcLocator);
-
-  ~eflowBuilder();
-  // Gaudi algorithm hooks
-
-  StatusCode initialize();
-  StatusCode execute();
-  StatusCode finalize();
-
- private:
-
-  std::string m_eflowPreparationAlgName;
-  std::string m_eflowObjectBuilderAlgName;
-  std::string m_eflowQuantitiesAlgName;
-
-  // Pointers to the corresponding sub-algorithms:
-  AthAlgorithm* m_eflowPreparationAlg;   // Build calo objects
-  AthAlgorithm* m_eflowObjectBuilderAlg;       // Build eflow objects
-  AthAlgorithm* m_eflowQuantitiesAlg;          // Calculate eflow, pTmiss
-
-};
-#endif
diff --git a/Reconstruction/eflowRec/eflowRec/eflowCaloObjectBuilder.h b/Reconstruction/eflowRec/eflowRec/eflowCaloObjectBuilder.h
deleted file mode 100644
index 347f17dc015..00000000000
--- a/Reconstruction/eflowRec/eflowRec/eflowCaloObjectBuilder.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef EFLOWREC_EFLOWOBJECTBUILDER_TOOLS_H
-#define EFLOWREC_EFLOWOBJECTBUILDER_TOOLS_H
-
-/********************************************************************
-
-NAME:     eflowCaloObjectBuilder.h
-PACKAGE:  offline/Reconstruction/eflowRec
-
-AUTHORS:  M.Hodgkinson
-CREATED:  24th January, 2005
-
-********************************************************************/
-
-#include "AthenaBaseComps/AthAlgorithm.h"
-#include "GaudiKernel/ToolHandle.h"
-
-class eflowISubtractionAlgTool;
-class StoreGateSvc;
-
-class eflowCaloObjectBuilder : public AthAlgorithm {
-
- public:
-
-  eflowCaloObjectBuilder(const std::string& name, ISvcLocator* pSvcLocator);
-  ~eflowCaloObjectBuilder();
-
-  StatusCode initialize();
-  StatusCode execute();
-  StatusCode finalize();
-
-  private:
-  void printTools();
-
-  //Name of eflow cluster Container to write out:
-  std::string m_eflowClustersOutputName;
-
-  // Name of eflow calo object Container to read in:  
-  std::string m_eflowCaloObjectsName;
-  // Name of rec track object Container to read in:
-  std::string m_eflowRecTracksName;
-  // Name of rec cluster object Container to read in:
-  std::string m_eflowRecClustersName;
-
-  StoreGateSvc* m_storeGate;
-
-  ToolHandleArray< eflowISubtractionAlgTool > m_tools;
-
-};
-#endif
diff --git a/Reconstruction/eflowRec/eflowRec/eflowCellLevelSubtractionTool.h b/Reconstruction/eflowRec/eflowRec/eflowCellLevelSubtractionTool.h
deleted file mode 100644
index ab627b1af7d..00000000000
--- a/Reconstruction/eflowRec/eflowRec/eflowCellLevelSubtractionTool.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef EFLOWREC_EFLOWCELLLEVELSUBTRACTIONTOOL_H
-#define EFLOWREC_EFLOWCELLLEVELSUBTRACTIONTOOL_H
-
-/********************************************************************
-
-NAME:     eflowFlowCellLevelSubtractionTool.h
-PACKAGE:  offline/Reconstruction/eflowRec
-
-AUTHORS:  M.Hodgkinson
-CREATED:  25th January, 2005
-
-********************************************************************/
-
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "eflowRec/eflowISubtractionAlgTool.h"
-#include "GaudiKernel/ToolHandle.h"
-
-#include "eflowRec/eflowCellList.h"
-#include "eflowRec/eflowLayerIntegrator.h"
-#include "eflowRec/eflowEEtaBinnedParameters.h"
-#include "xAODCaloEvent/CaloCluster.h"
-#include "xAODTracking/TrackParticle.h"
-
-#include <vector>
-#include <cassert>
-
-class eflowCaloObjectContainer;
-class eflowRecTrackContainer;
-class eflowRecClusterContainer;
-class IEFlowCellEOverPTool;
-class PFTrackClusterMatchingTool;
-class eflowRecTrack;
-
-static const InterfaceID IID_eflowCellLevelSubtractionTool("eflowCellLevelSubtractionTool", 1, 0);
-
-class eflowCellLevelSubtractionTool : virtual public eflowISubtractionAlgTool, public AthAlgTool {
-public:
-
-  eflowCellLevelSubtractionTool(const std::string& type,const std::string& name,const IInterface* parent);
-
-  ~eflowCellLevelSubtractionTool();
-
-  static const InterfaceID& interfaceID();
-
-  StatusCode initialize();
-  void execute(eflowCaloObjectContainer* theEflowCaloObjectContainer, eflowRecTrackContainer* recTrackContainer, eflowRecClusterContainer* recClusterContainer);
-  StatusCode finalize();
-
- private:
-
-  void calculateRadialEnergyProfiles();
-  void calculateAverageEnergyDensity();
-  void performSubtraction();
-  bool runInGoldenMode() { return ((m_goldenModeString == "golden1") || (m_goldenModeString == "golden2")); }
-  bool isEOverPFail(double expectedEnergy, double sigma, double clusterEnergy, bool consistencySigmaCut, bool useGoldenMode);
-  bool canAnnihilated(double expectedEnergy, double sigma, double clusterEnergy);
-
-  int matchAndCreateEflowCaloObj(int n);
-  std::string printTrack(const xAOD::TrackParticle* track);
-  std::string printCluster(const xAOD::CaloCluster* cluster);
-  void printAllClusters(eflowRecClusterContainer* recClusterContainer);
-
- private:
-
-  eflowCaloObjectContainer* m_eflowCaloObjectContainer;
-  eflowRecTrackContainer* m_eflowTrackContainer;
-  eflowRecClusterContainer* m_eflowClusterContainer;
-
-  ToolHandle<PFTrackClusterMatchingTool> m_matchingTool;
-  /* Matching tools for calculating the pull */
-  ToolHandle<PFTrackClusterMatchingTool> m_matchingToolForPull_015;
-  ToolHandle<PFTrackClusterMatchingTool> m_matchingToolForPull_02;
-  
-  /* Tools for "shower simulation" */
-  std::unique_ptr<eflowEEtaBinnedParameters> m_binnedParameters;
-  std::unique_ptr<eflowLayerIntegrator> m_integrator;
-  ToolHandle<IEFlowCellEOverPTool> m_theEOverPTool;
-
-  //double m_rCell;
-
-  double m_subtractionSigmaCut;
-  double m_consistencySigmaCut;
-
-  //flag if we want to caluclate EoVerP from single particles we dont do eflow, so clusters are original unmodified ones.
-  bool m_calcEOverP;
-
-  // string flag to configure for running in golden e/p match mode
-  std::string m_goldenModeString;
-
-  // Number of clusters to match
-  int m_nMatchesInCellLevelSubtraction;
-
-  /** Toggle whether to use updated 2015 charged shower subtraction, which disables the shower subtraction in high calorimeter energy density regions  */
-  bool m_useUpdated2015ChargedShowerSubtraction;
-
-};
-
-inline const InterfaceID& eflowCellLevelSubtractionTool::interfaceID()
-{ 
-  return IID_eflowCellLevelSubtractionTool; 
-}
-
-#endif // not EFLOWREC_EFLOWCELLLEVELSUBTRACTIONTOOL_H
diff --git a/Reconstruction/eflowRec/eflowRec/eflowClusterCollectionTool.h b/Reconstruction/eflowRec/eflowRec/eflowClusterCollectionTool.h
deleted file mode 100644
index 3d6d75ab69b..00000000000
--- a/Reconstruction/eflowRec/eflowRec/eflowClusterCollectionTool.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef EFLOWCLUSTERCOLLECTIONTOOL_H
-#define EFLOWCLUSTERCOLLECTIONTOOL_H
-
-/********************************************************************
-
-NAME:     eflowClusterCollectionTool.h - split off from eflowLCCalibTool
-PACKAGE:  offline/Reconstruction/eflowRec
-
-AUTHORS:  M.Hodgkinson
-CREATED:  May 2014
-
-********************************************************************/
-
-#include "GaudiKernel/ToolHandle.h"
-#include "xAODCaloEvent/CaloCluster.h"
-#include "xAODCaloEvent/CaloClusterContainer.h"
-#include "eflowRec/IEFlowClusterCollectionTool.h"
-#include "AthenaBaseComps/AthAlgTool.h"
-class eflowRecClusterContainer;
-
-class eflowClusterCollectionTool : virtual public IEFlowClusterCollectionTool, public AthAlgTool {
-
-  public:
-  
-  eflowClusterCollectionTool(const std::string& type,const std::string& name,const IInterface* parent);
-
-  ~eflowClusterCollectionTool() {};
-
-  static const InterfaceID& interfaceID();
-
-  StatusCode initialize();
-  std::unique_ptr<xAOD::CaloClusterContainer> execute(eflowCaloObjectContainer* theEflowCaloObjectContainer, bool useNonModifiedClusters);
-  std::unique_ptr<eflowRecClusterContainer> retrieve(eflowCaloObjectContainer* theEflowCaloObjectContainer, bool useNonModifiedClusters);
-  StatusCode finalize();
-
-};
-#endif
-
diff --git a/Reconstruction/eflowRec/eflowRec/eflowLCCalibTool.h b/Reconstruction/eflowRec/eflowRec/eflowLCCalibTool.h
deleted file mode 100644
index 3d50792f99d..00000000000
--- a/Reconstruction/eflowRec/eflowRec/eflowLCCalibTool.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef EFLOWLCCALIBTOOL_H
-#define EFLOWLCCALIBTOOL_H
-
-/********************************************************************
-
-NAME:     eflowLCCalibTool.h
-PACKAGE:  offline/Reconstruction/eflowRec
-
-AUTHORS:  T. Velz, M.Hodgkinson
-CREATED:  Jan 2014
-
-********************************************************************/
-
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "GaudiKernel/ToolHandle.h"
-#include "xAODCaloEvent/CaloCluster.h"
-#include "xAODCaloEvent/CaloClusterContainer.h"
-#include "CaloRec/CaloClusterCollectionProcessor.h"
-#include "eflowRec/eflowBaseAlgTool.h"
-#include "eflowRec/IEFlowClusterCollectionTool.h"
-
-#include <cassert>
-
-class eflowCaloObjectContainer;
-class eflowRecCluster;
-
-static const InterfaceID IID_eflowLCCalibTool("eflowLCCalibTool", 1, 0);
-
-class eflowLCCalibTool : virtual public eflowBaseAlgTool, public AthAlgTool {
-
-  public:
-  
-  eflowLCCalibTool(const std::string& type,const std::string& name,const IInterface* parent);
-
-  ~eflowLCCalibTool() {}
-
-  static const InterfaceID& interfaceID();
-
-  StatusCode initialize();
-  void execute(eflowCaloObjectContainer* theEflowCaloObjectContainer);
-  StatusCode finalize();
-
- private:
-
-  void apply(ToolHandle<CaloClusterCollectionProcessor>& calibTool, xAOD::CaloCluster* cluster);
-  void applyLocal(ToolHandle<CaloClusterCollectionProcessor>& calibTool, eflowRecCluster *cluster);
-  void applyLocalWeight(eflowRecCluster* theEFRecCluster);
-
-  /** Tool to put all clusters into a temporary container - then we use this to calculate moments, some of which depend on configuration of nearby clusters */
-  ToolHandle<IEFlowClusterCollectionTool> m_clusterCollectionTool;
-
-  /* Tool for applying local hadronc calibration weights to cells */
-  ToolHandle<CaloClusterCollectionProcessor> m_clusterLocalCalibTool;
-
-  /* Tool to deal with out of cluster corrections */
-  ToolHandle<CaloClusterCollectionProcessor> m_clusterLocalCalibOOCCTool;
-
-  /* Tool to do Pi0 corrections */
-  ToolHandle<CaloClusterCollectionProcessor> m_clusterLocalCalibOOCCPi0Tool;
-
-  /* Tool for correcting clusters at cell level for dead materia */
-  ToolHandle<CaloClusterCollectionProcessor> m_clusterLocalCalibDMTool;
-
-  bool m_useLocalWeight;
-
-};
-
-inline const InterfaceID& eflowLCCalibTool::interfaceID()
-{ 
-  return IID_eflowLCCalibTool;
-}
-
-#endif
diff --git a/Reconstruction/eflowRec/eflowRec/eflowMomentCalculatorTool.h b/Reconstruction/eflowRec/eflowRec/eflowMomentCalculatorTool.h
deleted file mode 100644
index 755fb5d1c0e..00000000000
--- a/Reconstruction/eflowRec/eflowRec/eflowMomentCalculatorTool.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef EFLOWMOMENTCALCULATORTOOL_H
-#define EFLOWMOMENTCALCULATORTOOL_H
-
-/********************************************************************
-
-NAME:     eflowMomentCalculatorTool - split from eflowLCCalibTool
-PACKAGE:  offline/Reconstruction/eflowRec
-
-AUTHORS:  M.Hodgkinson
-CREATED:  May 2014
-
-********************************************************************/
-
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "GaudiKernel/ToolHandle.h"
-#include "xAODCaloEvent/CaloCluster.h"
-#include "xAODCaloEvent/CaloClusterContainer.h"
-#include "CaloRec/CaloClusterCollectionProcessor.h"
-#include "eflowRec/eflowBaseAlgTool.h"
-#include "eflowRec/IEFlowClusterCollectionTool.h"
-
-#include <cassert>
-
-class eflowCaloObjectContainer;
-
-static const InterfaceID IID_eflowMomentCalculatorTool("eflowMomentCalculatorTool", 1, 0);
-
-class eflowMomentCalculatorTool : virtual public eflowBaseAlgTool, public AthAlgTool {
-
-  public:
-  
-  eflowMomentCalculatorTool(const std::string& type,const std::string& name,const IInterface* parent);
-
-  ~eflowMomentCalculatorTool() {}
-
-  static const InterfaceID& interfaceID();
-
-  StatusCode initialize();
-  void execute(eflowCaloObjectContainer* theEflowCaloObjectContainer);
-  StatusCode finalize();
-
- private:
-
-  /** Tool to put all clusters into a temporary container - then we use this to calculate moments, some of which depend on configuration of nearby clusters */
-  ToolHandle<IEFlowClusterCollectionTool> m_clusterCollectionTool;
-  
-  /* Tool to calculate cluster moments */
-  ToolHandle<CaloClusterCollectionProcessor> m_clusterMomentsMaker;
-
-  /** Bool to toggle whether we are in LC mode - false by default */
-  bool m_LCMode;
-
-};
-
-inline const InterfaceID& eflowMomentCalculatorTool::interfaceID()
-{ 
-  return IID_eflowMomentCalculatorTool;
-}
-
-#endif
diff --git a/Reconstruction/eflowRec/eflowRec/eflowObjectBuilder.h b/Reconstruction/eflowRec/eflowRec/eflowObjectBuilder.h
deleted file mode 100644
index d4eec598913..00000000000
--- a/Reconstruction/eflowRec/eflowRec/eflowObjectBuilder.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/*
- * eflowObjectBuilder.h
- *
- *  Created on: Mar 2, 2015
- *      Author: zhangrui
- */
-
-#ifndef EFLOWOBJECTBUILDER_H_
-#define EFLOWOBJECTBUILDER_H_
-
-
-#include "AthenaBaseComps/AthAlgorithm.h"
-#include "GaudiKernel/ToolHandle.h"
-
-#include <cassert>
-
-class eflowBaseAlgTool;
-class StoreGateSvc;
-
-class eflowObjectBuilder : public AthAlgorithm {
-
- public:
-
-  eflowObjectBuilder(const std::string& name, ISvcLocator* pSvcLocator);
-  ~eflowObjectBuilder();
-
-  StatusCode initialize();
-  StatusCode execute();
-  StatusCode finalize();
-
-  private:
-  void printTools();
-
-  //Name of eflow cluster Container to write out:
-  std::string m_eflowClustersOutputName;
-
-  // Name of eflow calo object Container to read in:
-  std::string m_eflowCaloObjectsName;
-
-  StoreGateSvc* m_storeGate;
-
-  ToolHandleArray< eflowBaseAlgTool > m_tools;
-
-};
-
-#endif /* EFLOWOBJECTBUILDER_H_ */
diff --git a/Reconstruction/eflowRec/eflowRec/eflowObjectCreatorTool.h b/Reconstruction/eflowRec/eflowRec/eflowObjectCreatorTool.h
deleted file mode 100644
index 37250a24b1e..00000000000
--- a/Reconstruction/eflowRec/eflowRec/eflowObjectCreatorTool.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef EFLOWOBJECTCREATORTOOL_H
-#define EFLOWOBJECTCREATORTOOL_H
-
-/********************************************************************
-
-NAME:     eflowObjectCreatorTool.h
-PACKAGE:  offline/Reconstruction/eflowRec
-
-AUTHORS:  M.Hodgkinson (based on eflowObjectBuilder class written by D.Tovey)
-CREATED:  15th August, 2005
-
-********************************************************************/
-
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "eflowRec/eflowBaseAlgTool.h"
-#include "GaudiKernel/ToolHandle.h"
-
-#include "AthLinks/ElementLink.h"
-#include "xAODCaloEvent/CaloCluster.h"
-
-#include "TrackVertexAssociationTool/ITrackVertexAssociationTool.h"
-
-#include "xAODTracking/VertexContainer.h"
-
-#include "xAODPFlow/PFO.h"
-#include "xAODPFlow/PFOContainer.h"
-
-#include <cassert>
-
-class eflowRecTrack;
-class eflowRecCluster;
-class eflowCaloObject;
-class eflowCaloObjectContainer;
-
-static const InterfaceID IID_eflowObjectCreatorTool("eflowObjectCreatorTool", 1, 0);
-
-class eflowObjectCreatorTool : virtual public eflowBaseAlgTool, public AthAlgTool {
-
-  public:
-  
-  eflowObjectCreatorTool(const std::string& type,const std::string& name,const IInterface* parent);
-
-  ~eflowObjectCreatorTool() {};
-
-  static const InterfaceID& interfaceID();
-
-  StatusCode initialize();
-  StatusCode execute(eflowCaloObject* energyFlowCaloObject);
-  void execute(eflowCaloObjectContainer* theEflowCaloObjectContainer);
-  StatusCode finalize();
-
-  private:
-  StatusCode setupPFOContainers();
-  void createChargedEflowObjects(eflowCaloObject* energyFlowCaloObject, bool addClusters = false);
-  void createChargedEflowObject(eflowRecTrack* efRecTrack, bool addClusters = false);
-  void createNeutralEflowObjects(eflowCaloObject* energyFlowCaloObject);
-
-  /** Function to add links to the vertex to which a charged PFO is matched (using the tracking CP loose vertex association tool) */
-  void addVertexLinksToChargedEflowObjects(const xAOD::VertexContainer* theVertexContainer);
-
-  /** Function to add cluster moments onto PFO */
-  void addMoment(xAOD::CaloCluster::MomentType momentType, xAOD::PFODetails::PFOAttributes pfoAttribute, const xAOD::CaloCluster* theCluster, xAOD::PFO* thePFO);
-
-  /* Name of PFO container to write out: */
-  std::string m_PFOOutputName;
-
-  xAOD::PFOContainer* m_chargedPFOContainer;
-  xAOD::PFOContainer* m_neutralPFOContainer;
-  xAOD::PFOContainer* m_neutralPFOContainer_nonModified;
-
-  bool m_eOverPMode;
-
-  /* String flag to configure for running in golden e/p match mode */
-  std::string m_goldenModeString;
-
-  /* Bool to toggle which jetetmiss configuration we are in - EM cluster input or LC cluster input */
-  bool m_LCMode;
-
-  /* ToolHandle to tracking CP loose vertex selection tool */
-  ToolHandle<CP::ITrackVertexAssociationTool> m_trackVertexAssociationTool;
-
-  /* String to specify name of VertexContainer to retrieve */
-  std::string m_vertexContainerName;
-
-  /* Bool to toggle AOD reduction task force cluster moment list */
-  bool m_useAODReductionMomentList;
-  
-};
-
-inline const InterfaceID& eflowObjectCreatorTool::interfaceID() { return IID_eflowObjectCreatorTool; }
-
-#endif
diff --git a/Reconstruction/eflowRec/eflowRec/eflowPreparation.h b/Reconstruction/eflowRec/eflowRec/eflowPreparation.h
deleted file mode 100644
index 93cad4a094e..00000000000
--- a/Reconstruction/eflowRec/eflowRec/eflowPreparation.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef EFLOWREC_EFLOWPREPARATION_H
-#define EFLOWREC_EFLOWPREPARATION_H
-/********************************************************************
-
-NAME:     eflowPreparation.h
-PACKAGE:  offline/Reconstruction/eflowRec
-
-AUTHORS:  D.R.Tovey
-CREATED:  10th November, 2001
-
-********************************************************************/
-
-#include <vector>
-#include <sstream>
-#include "AthenaBaseComps/AthAlgorithm.h"
-#include "GaudiKernel/ToolHandle.h"
-#include "Particle/TrackParticleContainer.h"
-#include "xAODCaloEvent/CaloCluster.h"
-#include "xAODCaloEvent/CaloClusterContainer.h"
-#include "xAODEgamma/Egamma.h"
-#include "xAODEgamma/ElectronContainer.h"
-#include "xAODMuon/Muon.h"
-#include "xAODMuon/MuonContainer.h"
-#include "xAODTracking/TrackParticle.h"
-#include "AthContainers/ConstDataVector.h"
-
-#include "StoreGate/DataHandle.h"
-
-#include "AthenaBaseComps/AthAlgorithm.h"
-#include "InDetTrackSelectionTool/IInDetTrackSelectionTool.h"
-
-class eflowTrackExtrapolatorBaseAlgTool;
-class eflowCaloObjectContainer;
-class PFTrackClusterMatchingTool;
-
-class CaloCellContainer;
-class eflowRecTrackContainer;
-class eflowRecClusterContainer;
-
-class eflowPreparation : public AthAlgorithm {
- public:
-
-  // constructor
-  eflowPreparation(const std::string& name, ISvcLocator* pSvcLocator);
-
-  ~eflowPreparation();
-
-  // Gaudi algorithm hooks
-  StatusCode initialize();
-  StatusCode execute();
-  StatusCode finalize();
-
- private:
-
-  StatusCode makeClusterContainer();
-  StatusCode makeTrackContainer();
-
-  /** for EM mode, LC weight for cells are retrieved before doing any subtraction; they will be used after subtraction */
-  void retrieveLCCalCellWeight(double energy, unsigned index, std::map<IdentifierHash, double>& cellWeights);
-
-  bool selectTrack(const xAOD::TrackParticle* track);
-
-  /** Put electron container and list of lepton cells into Storegate */
-  StatusCode recordLeptonContainers();
-
-  /** select electrons to use */
-  StatusCode selectElectrons();
-  /** check if track belongs to an electron */
-  bool isElectron(const xAOD::TrackParticle* track);
-  /** store the cells of the electrons */
-  void storeElectronCells(const xAOD::Egamma* electron);
-
-  /** select third chain muons to use */
-  StatusCode selectMuons();
-
-  /** check if track belongs to an muon */
-  bool isMuon(const xAOD::TrackParticle* track);
-  /** store the cells of the electrons */
-  void storeMuonCells(const xAOD::Muon* muon);
-
-  /** puts set of lepton cells into the lepton container */
-  void storeLeptonCells(const xAOD::CaloCluster* theCluster);
-
-  void clearContainers();
-
- private:
-
-
-  /// ReadHandle for the CaloClusterContainer to be used as input */
-  SG::ReadHandle<xAOD::CaloClusterContainer> m_caloClusterReadHandle;
-
-  /// ReadHandle for the CaloClusterContainer, at LC scale, to be used as input*/
-  SG::ReadHandle<xAOD::CaloClusterContainer> m_caloCalClusterReadHandle;
-
-  /// ReadHandle for the TrackParticleContainer to be used as input */
-  SG::ReadHandle<xAOD::TrackParticleContainer> m_trackReadHandle;
-
-  /// ReadHandle for the ElectronContainer to be used as input */
-  SG::ReadHandle<xAOD::ElectronContainer> m_electronReadHandle;
-
-  /// ReadHandle for the MuonContainer to be used as input */
-  SG::ReadHandle<xAOD::MuonContainer> m_muonReadHandle;
-  
-  /// WriteHandle for the eflowCaloObjectContainer to write out: */
-  SG::WriteHandle<eflowCaloObjectContainer> m_eflowCaloObjectContainerWriteHandle;
-  
-  /// WriteHandle for the eflowRecTrackContainer to write out: */
-  SG::WriteHandle<eflowRecTrackContainer> m_eflowRecTrackContainerWriteHandle;
-
-  /// WriteHandle for the eflowRecClusterContainer to write out: */
-  SG::WriteHandle<eflowRecClusterContainer> m_eflowRecClusterContainerWriteHandle;
-
-  /// Handle to interface on TrackToCalo tool. */
-  ToolHandle<eflowTrackExtrapolatorBaseAlgTool> m_theTrackExtrapolatorTool;
-
-  ToolHandle<PFTrackClusterMatchingTool> m_matchingTool;
-
-  /// Which eflow mode is in use - Tau, MET or Full */
-  std::string m_eflowMode;
-
-  /// WriteHandle for the ElectronContainer, that will be filled with electrons passing the electron ID in eflowPreparation::selectElectrons */
-  SG::WriteHandle<xAOD::ElectronContainer> m_selectedElectronsWriteHandle;
-
-  /// container of muons that we will select */
-  std::unique_ptr<xAOD::MuonContainer> m_selectedMuons;
-
-  /// WriteHandle for the CaloCellContainer, that will store calorimeter cells associated to leptons (electrons and muons) */
-  SG::WriteHandle<ConstDataVector<CaloCellContainer> > m_leptonCaloCellContainerWriteHandle;
-
-  /// bool to toggle masking out of lepton tracks */
-  bool m_useLeptons;
-
-  /// bool to toggle storage of lepton CaloCells */
-  bool m_storeLeptonCells;
-
-  /// Count the number of track-cluster matches -- for the summary in finalize() */
-  unsigned int m_nMatches;
-
-  /// New track selection tool */
-  ToolHandle<InDet::IInDetTrackSelectionTool> m_selTool;
-
-  /// Upper limit on track Pt for input tracks */
-  float m_upperTrackPtCut;
-  
-};
-#endif
diff --git a/Reconstruction/eflowRec/eflowRec/eflowRecoverSplitShowersTool.h b/Reconstruction/eflowRec/eflowRec/eflowRecoverSplitShowersTool.h
deleted file mode 100644
index daada2986e4..00000000000
--- a/Reconstruction/eflowRec/eflowRec/eflowRecoverSplitShowersTool.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef EFLOWREC_EFLOWRECOVERSPLITSHOWERSTOOL_H
-#define EFLOWREC_EFLOWRECOVERSPLITSHOWERSTOOL_H
-
-/********************************************************************
-
-NAME: eflowRecoverSplitShowersTool
-PACKAGE: offline/Reconstruction/eflowRec
-
-AUTHOR: Thomas Velz, Mark Hodgkinson
-CREATED: 16 January 2014
-
-********************************************************************/
-
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "GaudiKernel/ToolHandle.h"
-#include "xAODCaloEvent/CaloCluster.h"
-#include "xAODCaloEvent/CaloClusterContainer.h"
-#include "eflowRec/eflowISubtractionAlgTool.h"
-
-#include <cassert>
-
-class eflowCaloObjectContainer;
-class eflowRecCluster;
-class eflowRecTrack;
-class eflowTrackCaloPoints;
-class eflowLayerIntegrator;
-class eflowEEtaBinnedParameters;
-class IEFlowCellEOverPTool;
-class PFTrackClusterMatchingTool;
-class eflowRingSubtractionManager;
-class eflowRecTrackContainer;
-class eflowRecClusterContainer;
-class eflowCaloObject;
-
-static const InterfaceID IID_eflowRecoverSplitShowersTool("eflowRecoverSplitShowersTool", 1, 0);
-
-class eflowRecoverSplitShowersTool : virtual public eflowISubtractionAlgTool, public AthAlgTool {
-  
- public:
-
-  eflowRecoverSplitShowersTool(const std::string& type,const std::string& name,const IInterface* parent);
-
-  ~eflowRecoverSplitShowersTool();
-
-  static const InterfaceID& interfaceID();
-
-  virtual StatusCode initialize();
-  void execute(eflowCaloObjectContainer* theEflowCaloObjectContainer, eflowRecTrackContainer*, eflowRecClusterContainer*);
-  virtual StatusCode finalize();
-
- private:
-
-  void recycleTracksClusters();
-  void getClustersToConsider();
-  void getTracksToRecover();
-  int matchAndCreateEflowCaloObj();
-  void performRecovery(int const nOriginalObj);
-  void subtractTrackFromClusters(const eflowTrackCaloPoints& trackCalo, eflowRingSubtractionManager& ranking, eflowRecTrack* efRecTrack, std::vector<xAOD::CaloCluster*> clusterSubtractionList);
-  double getSumEnergy(const std::vector<xAOD::CaloCluster*>& clusters);
-
-  void printClusterList(std::vector<xAOD::CaloCluster*>& clusters, std::string prefix);
-  void performSubtraction(eflowCaloObject* thisEflowCaloObject);
-
-private:
-
-  eflowCaloObjectContainer* m_eflowCaloObjectContainer;
-  std::vector<eflowRecCluster*> m_clustersToConsider;
-  std::vector<eflowRecTrack*> m_tracksToRecover;
-
-  double m_rCell;
-  double m_windowRms;
-
-  /* Tool for getting e/p values and hadronic shower cell ordering principle parameters */
-  ToolHandle<IEFlowCellEOverPTool> m_theEOverPTool;
-
-  /** Track-Cluster matching tool */
-  ToolHandle<PFTrackClusterMatchingTool> m_matchingTool;
-
-  std::unique_ptr<eflowEEtaBinnedParameters> m_binnedParameters;
-  std::unique_ptr<eflowLayerIntegrator> m_integrator;
-
-  double m_subtractionSigmaCut;
-
-  bool m_recoverIsolatedTracks;
-
-  /** Count the number of track-cluster matches -- for the summary in finalize */
-  unsigned int m_nTrackClusterMatches;
-
-  /** Toggle whether to use updated 2015 charged shower subtraction, which disables the shower subtraction in high calorimeter energy density regions  */
-  bool m_useUpdated2015ChargedShowerSubtraction;
-  
-};
-
-inline const InterfaceID& eflowRecoverSplitShowersTool::interfaceID()
-{
-  return IID_eflowRecoverSplitShowersTool;
-}
-
-#endif
diff --git a/Reconstruction/eflowRec/eflowRec/eflowVertexInformationSetter.h b/Reconstruction/eflowRec/eflowRec/eflowVertexInformationSetter.h
deleted file mode 100644
index 86fe3160a2f..00000000000
--- a/Reconstruction/eflowRec/eflowRec/eflowVertexInformationSetter.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef EFLOWVERTEXINFORMATIONSETTER_H
-#define EFLOWVERTEXINFORMATIONSETTER_H
-
-/*
-
-Class to add information to neutral EFO that is required to do a vertex correction
-
-Author: Mark Hodgkinson
-Created: 19 April 2013
-
-*/
-
-//Athena
-#include "AthenaBaseComps/AthAlgorithm.h"
-
-#include <string>
-
-class StoreGateSvc;
-
-class eflowVertexInformationSetter : public AthAlgorithm {
-  
- public:
-
-  eflowVertexInformationSetter(const std::string& name, ISvcLocator* pSvcLocator);
-  ~eflowVertexInformationSetter();
-
-  virtual StatusCode initialize();
-  virtual StatusCode execute();
-  virtual StatusCode finalize();
-
- private:
-
-  std::string m_PFOName;
-
-  StoreGateSvc* m_storeGate;
-
-};
-#endif
diff --git a/Reconstruction/eflowRec/python/eflowLocalHadCal.py b/Reconstruction/eflowRec/python/PFLocalHadCal.py
similarity index 88%
rename from Reconstruction/eflowRec/python/eflowLocalHadCal.py
rename to Reconstruction/eflowRec/python/PFLocalHadCal.py
index 6053c6ab495..b5e6c2d34c2 100644
--- a/Reconstruction/eflowRec/python/eflowLocalHadCal.py
+++ b/Reconstruction/eflowRec/python/PFLocalHadCal.py
@@ -4,11 +4,11 @@ from AthenaCommon.Logging import logging
 from AthenaCommon.JobProperties import jobproperties
 import traceback
 
-class eflowLocalHadCal:
+class PFLocalHadCal:
 
-    def eflowCaloClusterLocalCalib(self,name):
+    def PFCaloClusterLocalCalib(self,name):
 
-        mlog = logging.getLogger( 'eflowLocalHadCal::eflowCaloClusterLocalCalib' )
+        mlog = logging.getLogger( 'PFLocalHadCal::PFCaloClusterLocalCalib' )
 
         try:
             from CaloClusterCorrection.CaloClusterCorrectionConf import CaloClusterLocalCalib
@@ -56,7 +56,7 @@ class eflowLocalHadCal:
 
     def getLCWeightTool(self,name):
 
-        mlog = logging.getLogger( 'eflowLocalHadCal::getLCWeightTool' )
+        mlog = logging.getLogger( 'PFLocalHadCal::getLCWeightTool' )
 
         try:
             from CaloUtils.CaloUtilsConf import CaloLCWeightTool;
@@ -100,9 +100,9 @@ class eflowLocalHadCal:
 
         return LCWeight
 
-    def eflowCaloClusterLocalCalibDM(self,name):
+    def PFCaloClusterLocalCalibDM(self,name):
 
-        mlog = logging.getLogger( 'eflowLocalHadCal::eflowCaloClusterLocalCalibDM' )
+        mlog = logging.getLogger( 'PFLocalHadCal::PFCaloClusterLocalCalibDM' )
 
         try:
             from CaloClusterCorrection.CaloClusterCorrectionConf import CaloClusterLocalCalib
@@ -123,7 +123,7 @@ class eflowLocalHadCal:
 
     def getDeadMaterialCorrectionTool(self,name):
 
-        mlog = logging.getLogger( 'eflowLocalHadCal::getDeadMaterialCorrectionTool' )
+        mlog = logging.getLogger( 'PFLocalHadCal::getDeadMaterialCorrectionTool' )
         
         try:
             from CaloUtils.CaloUtilsConf import CaloLCDeadMaterialTool
@@ -140,9 +140,9 @@ class eflowLocalHadCal:
 
         return LCDeadMaterial
         
-    def eflowCaloClusterLocalCalibOO(self,name):
+    def PFCaloClusterLocalCalibOO(self,name):
 
-        mlog = logging.getLogger( 'eflowLocalHadCal::eflowCaloClusterLocalCalibOO' )
+        mlog = logging.getLogger( 'PFLocalHadCal::PFCaloClusterLocalCalibOO' )
 
         try:
             from CaloClusterCorrection.CaloClusterCorrectionConf import CaloClusterLocalCalib
@@ -162,9 +162,9 @@ class eflowLocalHadCal:
 
         return CalibOO
 
-    def eflowCaloClusterLocalCalibOOPi0(self,name):
+    def PFCaloClusterLocalCalibOOPi0(self,name):
 
-        mlog = logging.getLogger( 'eflowLocalHadCal::eflowCaloClusterLocalCalibOOPi0' )
+        mlog = logging.getLogger( 'PFLocalHadCal::PFCaloClusterLocalCalibOOPi0' )
         
         try:
             from CaloClusterCorrection.CaloClusterCorrectionConf import CaloClusterLocalCalib
@@ -185,7 +185,7 @@ class eflowLocalHadCal:
 
     def getOutOfClusterCorrectionTool(self,name):
 
-        mlog = logging.getLogger( 'eflowLocalHadCal::getOutOfClusterCorrectionTool' )
+        mlog = logging.getLogger( 'PFLocalHadCal::getOutOfClusterCorrectionTool' )
 
         try:
             from CaloUtils.CaloUtilsConf import CaloLCOutOfClusterTool
@@ -203,7 +203,7 @@ class eflowLocalHadCal:
 
     def getOutOfClusterCorrectionPi0Tool(self,name):
 
-        mlog = logging.getLogger( 'eflowLocalHadCal::getOutOfClusterCorrectionPi0Tool' )
+        mlog = logging.getLogger( 'PFLocalHadCal::getOutOfClusterCorrectionPi0Tool' )
 
         try:
             from CaloUtils.CaloUtilsConf import CaloLCOutOfClusterTool
diff --git a/Reconstruction/eflowRec/python/eflowCaloObjectBuilder.py b/Reconstruction/eflowRec/python/eflowCaloObjectBuilder.py
deleted file mode 100644
index 31cb45f630c..00000000000
--- a/Reconstruction/eflowRec/python/eflowCaloObjectBuilder.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-
-from AthenaCommon.Logging import logging  # loads logger 
-import traceback # to allow printout of trace back
-from RecExConfig.Configured import Configured # import base class 
-
-def setup_eflowObjectBuilderTools(Configured, nameModifier,mlog):
-
-    if nameModifier != "EM" and nameModifier != "LC":
-        mlog.error("Invalid calorimeter scale was specified : should be LC or EM, but was "+nameModifier)
-        return False
-
-    try:
-        from eflowRec.eflowRecConf import eflowCaloObjectBuilder
-        ObjectBuilder_Tools=eflowCaloObjectBuilder("eflowCaloObjectBuilder_"+nameModifier)
-    except:
-        mlog.error("could not import eflowRec.eflowObjectBuilderTools")
-        print traceback.format_exc()
-        return False
-
-    Configured._eflowObjectBuilderToolsHandle = ObjectBuilder_Tools
-
-    from eflowRec.eflowRecFlags import jobproperties
-
-    ObjectBuilder_Tools.PrivateToolList  = []
-
-    if jobproperties.eflowRecFlags.eflowAlgType == "CellLevel" or jobproperties.eflowRecFlags.eflowAlgType == "EOverP" :
-        try:
-            from eflowRec.eflowCellLevelSubtractionToolDefault import eflowCellLevelSubtractionToolDefault
-            CellLevelSubtractionTool = eflowCellLevelSubtractionToolDefault("eflowCellLevelSubtractionTool_"+nameModifier)
-        except:
-            mlog.error("could not import eflowRec.eflowCellLevelSubtractionTool")
-            print traceback.format_exc()
-            return False
-        
-        # Toggle e/p mode
-        if jobproperties.eflowRecFlags.eflowAlgType == "EOverP":
-            CellLevelSubtractionTool.CalcEOverP = True
-            
-        ObjectBuilder_Tools.PrivateToolList += [CellLevelSubtractionTool]
-        
-    if jobproperties.eflowRecFlags.useSplitShowers == True and jobproperties.eflowRecFlags.eflowAlgType != "EOverP":
-        if nameModifier == "EM":  
-            try:
-                from eflowRec.eflowRecoverSplitShowersToolDefault import eflowRecoverSplitShowersToolDefault
-                RecoverSplitShowersToolDefault=eflowRecoverSplitShowersToolDefault("eflowRecoverSplitShowers_"+nameModifier)
-            except:
-                mlog.error("could not import eflowRec.eflowRecoverSplitShowersToolDefault")
-                print traceback.format_exc()
-                return False
-            ObjectBuilder_Tools.PrivateToolList += [RecoverSplitShowersToolDefault]
-
-        elif nameModifier == "LC":
-            try:
-                from eflowRec.eflowRecoverSplitShowersToolDefault_LC import eflowRecoverSplitShowersToolDefault_LC
-                RecoverSplitShowersToolDefault_LC=eflowRecoverSplitShowersToolDefault_LC("eflowRecoverSplitShowers_"+nameModifier)
-            except:
-                mlog.error("could not import eflowRec.eflowRecoverSplitShowersToolDefault")
-                print traceback.format_exc()
-                return False
-            ObjectBuilder_Tools.PrivateToolList += [RecoverSplitShowersToolDefault_LC]
-
-    from AthenaCommon.AlgSequence import AlgSequence
-    topSequence = AlgSequence()
-    topSequence += ObjectBuilder_Tools
-
-    return True
diff --git a/Reconstruction/eflowRec/python/eflowCaloObjectBuilderGetter.py b/Reconstruction/eflowRec/python/eflowCaloObjectBuilderGetter.py
deleted file mode 100644
index 0cf87cad760..00000000000
--- a/Reconstruction/eflowRec/python/eflowCaloObjectBuilderGetter.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging  # loads logger 
-from RecExConfig.Configured import Configured # import base class
-
-class eflowCaloObjectBuilderGetter ( Configured )  :
-
-    def configure(self):
-
-        mlog = logging.getLogger( 'eflowCaloObjectBuilderGetter:configure :' )
-
-        from eflowRec.eflowCaloObjectBuilder import setup_eflowObjectBuilderTools
-        return setup_eflowObjectBuilderTools(self, "EM", mlog)
-
-    def eflowObjectBuilderToolsHandle(self):
-        return self._eflowObjectBuilderToolsHandle
-
-   
diff --git a/Reconstruction/eflowRec/python/eflowCaloObjectBuilderGetter_LC.py b/Reconstruction/eflowRec/python/eflowCaloObjectBuilderGetter_LC.py
deleted file mode 100644
index 20417f67c99..00000000000
--- a/Reconstruction/eflowRec/python/eflowCaloObjectBuilderGetter_LC.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging  # loads logger 
-from RecExConfig.Configured import Configured # import base class
-
-class eflowCaloObjectBuilderGetter_LC ( Configured )  :
-
-    def configure(self):
-
-        mlog = logging.getLogger( 'eflowCaloObjectBuilderGetter_LC:configure :' )
-
-        from eflowRec.eflowCaloObjectBuilder import setup_eflowObjectBuilderTools
-        return setup_eflowObjectBuilderTools(self, "LC", mlog)
-
-    def eflowObjectBuilderToolsHandle(self):
-        return self._eflowObjectBuilderToolsHandle
-
-   
diff --git a/Reconstruction/eflowRec/python/eflowCaloSetup.py b/Reconstruction/eflowRec/python/eflowCaloSetup.py
deleted file mode 100644
index efe3c995ec2..00000000000
--- a/Reconstruction/eflowRec/python/eflowCaloSetup.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging  # loads logger                           
-import traceback # to allow printout of trace back
-from RecExConfig.Configured import Configured # import base class 
-
-def setup_eflowCaloObjectCreator(Configured, nameModifier,mlog):
-
-    if nameModifier != "EM" and nameModifier != "LC":
-        mlog.error("Invalid calorimeter scale was specified : should be LC or EM, but was "+nameModifier)
-        return False
-
-    try:
-        from eflowRec.eflowRecConf import eflowPreparation
-        eflowPreparationAlgorithm=eflowPreparation("eflow"+nameModifier+"CaloObjectBuilder")
-    except:
-        mlog.error("could not import eflowRec.eflowPreparation")
-        print traceback.format_exc()
-        return False
-
-    Configured._eflowPreparationHandle = eflowPreparationAlgorithm
-
-    try:
-        from eflowRec.eflowRecConf import eflowTrackCaloExtensionTool
-        TrackCaloExtensionTool=eflowTrackCaloExtensionTool()
-    except:
-        mlog.error("could not import eflowRec.eflowTrackCaloExtensionTool")
-        print traceback.format_exc()
-        return False
-
-    eflowPreparationAlgorithm.TrackExtrapolatorTool = TrackCaloExtensionTool
-
-    # sets output key of C++ algorithm equal to the python side 
-    eflowPreparationAlgorithm.EflowCaloObjectsOutputName=Configured.outputKey()
-
-    from eflowRec.eflowRecFlags import jobproperties
-    
-    if "EM" == nameModifier:
-        eflowPreparationAlgorithm.ClustersName = "CaloTopoCluster"
-        eflowPreparationAlgorithm.CalClustersName = "CaloCalTopoClusters"
-    elif "LC" == nameModifier:
-        eflowPreparationAlgorithm.ClustersName = "CaloCalTopoClusters"
-        eflowPreparationAlgorithm.CalClustersName = ""
-
-    if True == jobproperties.eflowRecFlags.useLeptons:
-        eflowPreparationAlgorithm.useLeptons = True
-        if True == jobproperties.eflowRecFlags.storeLeptonCells:
-            eflowPreparationAlgorithm.storeLeptonCells = True
-            if "LC" == nameModifier:
-                eflowPreparationAlgorithm.eflowLeptonCellsName="eflowRec_leptonCellContainer_LC"
-    else:
-        eflowPreparationAlgorithm.useLeptons = False
-
-    if "LC" == nameModifier:
-        eflowPreparationAlgorithm.EflowCaloObjectsOutputName="eflowCaloObjects_LC"
-        eflowPreparationAlgorithm.eflowElectronsName="eflowRec_selectedElectrons_LC"
-
-    try:
-        from InDetTrackSelectionTool.InDetTrackSelectionToolConf import InDet__InDetTrackSelectionTool
-        TrackSelectionTool = InDet__InDetTrackSelectionTool()
-    except:
-        mlog.error("could not import InDetTrackSelectionTool.InDet__InDetTrackSelectionTool")
-        print traceback.format_exc()
-        return False
-
-    try:
-             from AthenaCommon.AppMgr import ToolSvc
-    except:
-             mlog.error("could not import ToolSvc")
-             print traceback.format_exc()
-             return False
-
-    ToolSvc += TrackSelectionTool
-
-    TrackSelectionTool.CutLevel = "TightPrimary"
-    TrackSelectionTool.minPt = 500.0 
-
-    eflowPreparationAlgorithm.TrackSelectionTool = TrackSelectionTool
-
-    from RecExConfig.ObjKeyStore import objKeyStore
-    objKeyStore.addTransient(Configured.outputType(),Configured.outputKey())
-
-    from AthenaCommon.AlgSequence import AlgSequence
-    topSequence = AlgSequence()
-    topSequence += eflowPreparationAlgorithm ;
-
-    return True
diff --git a/Reconstruction/eflowRec/python/eflowCellLevelSubtractionSetup.py b/Reconstruction/eflowRec/python/eflowCellLevelSubtractionSetup.py
deleted file mode 100644
index 7802fbaf7e8..00000000000
--- a/Reconstruction/eflowRec/python/eflowCellLevelSubtractionSetup.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from RecExConfig.Configured import Configured # import base class 
-
-def setup_eflowCellLevelSubtraction(Configured, nameModifier, mlog):
-
-    Configured.SubtractionSigmaCut = 1.5
-    Configured.ConsistencySigmaCut = 1.0
-
-    if "EM" == nameModifier:
-
-        try:
-            from eflowRec.eflowRecConf import eflowCellEOverPTool_mc12_JetETMiss
-            CellEOverPTool=eflowCellEOverPTool_mc12_JetETMiss()
-        except:
-            mlog.error("could not import eflowRec.eflowCellEOverPTool_mc12")
-            print traceback.format_exc()
-            return False
-        
-        Configured.eflowCellEOverPTool=CellEOverPTool
-
-    elif "LC" == nameModifier:
-        try:
-            from eflowRec.eflowRecConf import eflowCellEOverPTool_mc12_LC
-            CellEOverPTool=eflowCellEOverPTool_mc12_LC()
-        except:
-            mlog.error("could not import eflowRec.eflowCellEOverPTool_mc12_LC")
-            print traceback.format_exc()
-            return False
-
-        Configured.eflowCellEOverPTool=CellEOverPTool
-
-    from eflowRec.eflowRecFlags import jobproperties
-    if jobproperties.eflowRecFlags.useUpdated2015ChargedShowerSubtraction == False:
-        Configured.useUpdated2015ChargedShowerSubtraction = False
-
-    return True
diff --git a/Reconstruction/eflowRec/python/eflowCellLevelSubtractionToolDefault.py b/Reconstruction/eflowRec/python/eflowCellLevelSubtractionToolDefault.py
deleted file mode 100644
index 58d0b351dac..00000000000
--- a/Reconstruction/eflowRec/python/eflowCellLevelSubtractionToolDefault.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging
-from AthenaCommon.JobProperties import jobproperties
-import traceback
-# import the base class
-from eflowRec.eflowRecConf import eflowCellLevelSubtractionTool
-
-from eflowRec.eflowRecFlags import jobproperties
-
-class eflowCellLevelSubtractionToolDefault(eflowCellLevelSubtractionTool) :
-
-    def __init__(self, name="eflowCellLevelSubtractionToolDefault"): 
-
-        eflowCellLevelSubtractionTool.__init__( self, name )
-
-        mlog = logging.getLogger( 'eflowCellLevelSubtractionToolDefault::__init__ ' )
-        mlog.info("entering")
-
-        self.SubtractionSigmaCut = 1.2
-        self.ConsistencySigmaCut = 1.0
-
-        from eflowRec.eflowRecFlags import jobproperties
-        if jobproperties.eflowRecFlags.eflowAlgType == "EOverP":
-            self.nMatchesInCellLevelSubtraction = -1
-        else:
-            self.nMatchesInCellLevelSubtraction = 1
-
-        try:
-            from eflowRec.eflowRecConf import PFTrackClusterMatchingTool
-            MatchingTool = PFTrackClusterMatchingTool("CalObjBldMatchingTool")
-            MatchingTool_Pull_02 = PFTrackClusterMatchingTool("MatchingTool_Pull_02")
-            MatchingTool_Pull_015 = PFTrackClusterMatchingTool("MatchingTool_Pull_015")
-        except:
-            mlog.error("could not import eflowRec.PFTrackClusterMatchingTool")
-            print traceback.format_exc()
-            return False
-
-        MatchingTool_Pull_015.TrackPositionType   = 'EM2EtaPhi' # str
-        MatchingTool_Pull_015.ClusterPositionType = 'PlainEtaPhi' # str
-        MatchingTool_Pull_015.DistanceType        = 'EtaPhiSquareDistance' # str
-        MatchingTool_Pull_015.MatchCut = 0.15*0.15 # float
-        self.PFTrackClusterMatchingTool_015 = MatchingTool_Pull_015
-        
-        MatchingTool_Pull_02.TrackPositionType   = 'EM2EtaPhi' # str
-        MatchingTool_Pull_02.ClusterPositionType = 'PlainEtaPhi' # str
-        MatchingTool_Pull_02.DistanceType        = 'EtaPhiSquareDistance' # str
-        MatchingTool_Pull_02.MatchCut = 0.2*0.2 # float
-        self.PFTrackClusterMatchingTool_02 = MatchingTool_Pull_02
-
-        self.PFTrackClusterMatchingTool = MatchingTool
-
-        if jobproperties.eflowRecFlags.eflowAlgType == "EOverP":
-            MatchingTool.ClusterPositionType = 'PlainEtaPhi' # str
-            MatchingTool.DistanceType        = 'EtaPhiSquareDistance'
-            MatchingTool.MatchCut = 0.2*0.2 # float
-
-        
-        from eflowRec.eflowCellLevelSubtractionSetup import setup_eflowCellLevelSubtraction
-        return setup_eflowCellLevelSubtraction(self, "EM", mlog)
-    
-        if jobproperties.eflowRecFlags.useUpdated2015ChargedShowerSubtraction == False:
-            self.useUpdated2015ChargedShowerSubtraction = False
-        
-
-        gmFlag=""# default set to "golden1" for goldenMode. In the end this should come from this flag jobproperties.eflowRecFlags.goldenModeString()
-        self.goldenModeString=gmFlag
-        print "Configuring eflowCellLevelSubtractionTool with goldenModeString: ",gmFlag
-        
diff --git a/Reconstruction/eflowRec/python/eflowLCCalibToolDefault.py b/Reconstruction/eflowRec/python/eflowLCCalibToolDefault.py
deleted file mode 100644
index 1fd010351b6..00000000000
--- a/Reconstruction/eflowRec/python/eflowLCCalibToolDefault.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging  # loads logger 
-
-from eflowRec.eflowRecConf import eflowLCCalibTool
-
-class eflowLCCalibToolDefault(eflowLCCalibTool) :
-
-    def __init__(self, name="eflowLCCalibToolDefault"): 
-
-        eflowLCCalibTool.__init__( self, name )
-
-        mlog = logging.getLogger( 'eflowLCCalibToolDefault::__init__ ' )
-        mlog.info("entering")
-
-        try:
-            from eflowRec.eflowLocalHadCal import eflowLocalHadCal
-        except:
-            mlog.error("could not import eflowRec.eflowLocalHadCal")
-            print traceback.format_exc()
-            return False
-
-        LocalHadCal = eflowLocalHadCal()
-        Calib = LocalHadCal.eflowCaloClusterLocalCalib(name)
-        CalibOO = LocalHadCal.eflowCaloClusterLocalCalibOO(name)
-        CalibOOPi0 = LocalHadCal.eflowCaloClusterLocalCalibOOPi0(name)
-        CalibDM = LocalHadCal.eflowCaloClusterLocalCalibDM(name)
-
-        from CaloRec.CaloTopoClusterFlags import jobproperties
-        if not (jobproperties.CaloTopoClusterFlags.doTopoClusterLocalCalib()):
-            #load local hadron calibration database, if not done so by CaloRec already
-            from CaloRec import CaloClusterTopoCoolFolder
-                    
-        self.CaloClusterLocalCalib=Calib
-        self.CaloClusterLocalCalibOOCC=CalibOO
-        self.CaloClusterLocalCalibOOCCPi0=CalibOOPi0
-        self.CaloClusterLocalCalibDM=CalibDM
-
-        try:
-            from eflowRec.eflowRecConf import eflowClusterCollectionTool
-            eflowClusterCollectionTool = eflowClusterCollectionTool("eflowClusterCollectionTool_LCCalib")
-        except:
-            mlog.error("could not import eflowRec. eflowClusterCollectionTool")
-            print traceback.format_exc()
-            return False
-
-        self.eflowRecClusterCollectionTool = eflowClusterCollectionTool 
-        self.UseLocalWeight = False
diff --git a/Reconstruction/eflowRec/python/eflowMomentCalculatorSetup.py b/Reconstruction/eflowRec/python/eflowMomentCalculatorSetup.py
deleted file mode 100644
index 9536dcf6e12..00000000000
--- a/Reconstruction/eflowRec/python/eflowMomentCalculatorSetup.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging  # loads logger 
-import traceback # to allow printout of trace back
-from RecExConfig.Configured import Configured # import base class 
-
-def setup_eflowMomentCalculatorTool(Configured, nameModifier,mlog):
-    
-    if nameModifier != "EM" and nameModifier != "LC":
-        mlog.error("Invalid calorimeter scale was specified : should be LC or EM, but was "+nameModifier)
-        return False
-
-    try:
-        from eflowRec.eflowRecConf import eflowClusterCollectionTool
-        eflowClusterCollectionTool = eflowClusterCollectionTool("eflowClusterCollectionTool_MomentCalculator_"+nameModifier)
-    except:
-        mlog.error("could not import eflowRec. eflowClusterCollectionTool")
-        print traceback.format_exc()
-        return False
-    
-    Configured.eflowRecClusterCollectionTool = eflowClusterCollectionTool
diff --git a/Reconstruction/eflowRec/python/eflowMomentCalculatorToolDefault.py b/Reconstruction/eflowRec/python/eflowMomentCalculatorToolDefault.py
deleted file mode 100644
index 519971ebd8f..00000000000
--- a/Reconstruction/eflowRec/python/eflowMomentCalculatorToolDefault.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging  # loads logger 
-from AthenaCommon.SystemOfUnits import deg
-from AthenaCommon.Constants import INFO
-
-from eflowRec.eflowRecConf import eflowMomentCalculatorTool
-
-class eflowMomentCalculatorToolDefault(eflowMomentCalculatorTool) :
-
-    def __init__(self, name="eflowMomentCalculatorToolDefault"): 
-
-        eflowMomentCalculatorTool.__init__( self, name )
-
-        mlog = logging.getLogger( 'eflowMomentCalculatorToolDefault::__init__ ' )
-        mlog.info("entering")
-
-        try:
-            from CaloRec.CaloRecConf import CaloClusterMomentsMaker
-            ClusterMomentsMaker = CaloClusterMomentsMaker()
-        except:
-            mlog.error("could not import CaloRec.CaloClusterMomentsMaker")
-            print traceback.format_exc()
-            return False
-
-        from CaloRec.CaloTopoClusterFlags import jobproperties
-
-        from CaloTools.CaloNoiseToolDefault import CaloNoiseToolDefault
-        theCaloNoiseTool = CaloNoiseToolDefault()
-        from AthenaCommon.AppMgr import ToolSvc
-        ToolSvc += theCaloNoiseTool
-
-        ClusterMomentsMaker.MaxAxisAngle = 20*deg
-        ClusterMomentsMaker.WeightingOfNegClusters = jobproperties.CaloTopoClusterFlags.doTreatEnergyCutAsAbsolute() 
-        ClusterMomentsMaker.MinBadLArQuality = 4000
-        ClusterMomentsMaker.CaloNoiseTool = theCaloNoiseTool
-        ClusterMomentsMaker.UsePileUpNoise = True
-        ClusterMomentsMaker.TwoGaussianNoise = jobproperties.CaloTopoClusterFlags.doTwoGaussianNoise()
-        ClusterMomentsMaker.OutputLevel = INFO
-        ClusterMomentsMaker.MomentsNames = [
-            "FIRST_PHI" 
-            ,"FIRST_ETA"
-            ,"SECOND_R" 
-            ,"SECOND_LAMBDA"
-            ,"DELTA_PHI"
-            ,"DELTA_THETA"
-            ,"DELTA_ALPHA" 
-            ,"CENTER_X"
-            ,"CENTER_Y"
-            ,"CENTER_Z"
-            ,"CENTER_MAG"
-            ,"CENTER_LAMBDA"
-            ,"LATERAL"
-            ,"LONGITUDINAL"
-            ,"FIRST_ENG_DENS" 
-            ,"ENG_FRAC_EM" 
-            ,"ENG_FRAC_MAX" 
-            ,"ENG_FRAC_CORE" 
-            ,"FIRST_ENG_DENS" 
-            ,"SECOND_ENG_DENS"
-            ,"ISOLATION"
-            ,"EM_PROBABILITY"
-            ,"ENG_POS"
-            ,"ENG_BAD_CELLS"
-            ,"N_BAD_CELLS"
-            ,"BADLARQ_FRAC"
-            ,"AVG_LAR_Q"
-            ,"AVG_TILE_Q"
-            ,"SIGNIFICANCE"
-            ]
-
-
-        self.CaloClusterMomentsMaker=ClusterMomentsMaker
-
-        from eflowRec.eflowMomentCalculatorSetup import setup_eflowMomentCalculatorTool
-        return setup_eflowMomentCalculatorTool(self, "LC", mlog)
diff --git a/Reconstruction/eflowRec/python/eflowObjectBuilderGetter.py b/Reconstruction/eflowRec/python/eflowObjectBuilderGetter.py
deleted file mode 100644
index 6d511caa196..00000000000
--- a/Reconstruction/eflowRec/python/eflowObjectBuilderGetter.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging  # loads logger 
-from RecExConfig.Configured import Configured # import base class
-
-class eflowObjectBuilderGetter ( Configured )  :
-
-    _outputType = "xAOD::PFOContainer"
-    _output = { _outputType : "chargedJetETMiss_eflowRec",   _outputType : "neutralJetETMiss_eflowRec"}
-
-    def configure(self):
-
-        mlog = logging.getLogger( 'eflowObjectBuilderGetter:configure :' )
-        mlog.info("Output="+self.outputKey() ) # prints an info message
-
-        from eflowRec.eflowObjectBuilderSetup import setup_eflowObjectBuilder
-        return setup_eflowObjectBuilder(self, "EM", mlog)
-
-    def outputKey(self):
-        return self._output[self._outputType]
-
-    def outputType(self):
-        return self._outputType
-
-    def eflowObjectBuilderHandle(self):
-        return self._eflowObjectBuilderHandle
diff --git a/Reconstruction/eflowRec/python/eflowObjectBuilderGetter_LC.py b/Reconstruction/eflowRec/python/eflowObjectBuilderGetter_LC.py
deleted file mode 100644
index f82a8f406a4..00000000000
--- a/Reconstruction/eflowRec/python/eflowObjectBuilderGetter_LC.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging  # loads logger 
-from RecExConfig.Configured import Configured # import base class
-
-class eflowObjectBuilderGetter_LC ( Configured )  :
-
-    _outputType = "xAOD::PFOContainer"
-    _output = { _outputType : "chargedJetETMiss_LC_eflowRec",   _outputType : "neutralJetETMiss_LC_eflowRec"}
-
-    def configure(self):
-
-        mlog = logging.getLogger( 'eflowObjectBuilderGetter_LC:configure :' )
-        mlog.info("Output="+self.outputKey() ) # prints an info message
-
-        from eflowRec.eflowObjectBuilderSetup import setup_eflowObjectBuilder
-        return setup_eflowObjectBuilder(self, "LC", mlog)
-
-    def outputKey(self):
-        return self._output[self._outputType]
-
-    def outputType(self):
-        return self._outputType
-
-    def eflowObjectBuilderHandle(self):
-        return self._eflowObjectBuilderHandle
diff --git a/Reconstruction/eflowRec/python/eflowObjectBuilderSetup.py b/Reconstruction/eflowRec/python/eflowObjectBuilderSetup.py
deleted file mode 100644
index a8e9271f886..00000000000
--- a/Reconstruction/eflowRec/python/eflowObjectBuilderSetup.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-
-from AthenaCommon.Logging import logging  # loads logger 
-import traceback # to allow printout of trace back
-from RecExConfig.Configured import Configured # import base class 
-
-def setup_eflowObjectBuilder(Configured, nameModifier,mlog):
-    print "eflowObjectBuilderSetup.py : setup_eflowObjectBuilder"
-
-    if nameModifier != "EM" and nameModifier != "LC":
-        mlog.error("Invalid calorimeter scale was specified : should be LC or EM, but was "+nameModifier)
-        return False
-
-    try:
-        from eflowRec.eflowRecConf import eflowObjectBuilder
-        ObjectBuilder=eflowObjectBuilder("eflowObjectBuilder_"+nameModifier)
-    except:
-        mlog.error("could not import eflowRec.eflowObjectBuilder")
-        print traceback.format_exc()
-        return False
-
-    Configured._eflowObjectBuilderHandle = ObjectBuilder
-
-    from eflowRec.eflowRecFlags import jobproperties
-
-    ObjectBuilder.PrivateToolList  = []
-
-    try:
-        from eflowRec.eflowMomentCalculatorToolDefault import eflowMomentCalculatorToolDefault
-        MomentCalculatorTool = eflowMomentCalculatorToolDefault("eflowMomentCalculatorTool_"+nameModifier)
-    except:
-        mlog.error("could not import eflowRec.eflowMomentCalculatorTool")
-        print traceback.format_exc()
-        return False
-
-    if nameModifier == "LC":
-        MomentCalculatorTool.LCMode = True
-
-    ObjectBuilder.PrivateToolList += [MomentCalculatorTool]
-
-    if nameModifier == "EM" and not jobproperties.eflowRecFlags.CalType == "NoCal":        
-        try:
-            from eflowRec.eflowLCCalibToolDefault import eflowLCCalibToolDefault
-            LCCalibTool = eflowLCCalibToolDefault("eflowLCCalibTool_"+nameModifier)
-        except:
-            mlog.error("could not import eflowRec.eflowLCCalibTool")
-            print traceback.format_exc()
-            return False
-
-        ObjectBuilder.PrivateToolList += [LCCalibTool]
-        
-    try:
-        from eflowRec.eflowObjectCreatorToolDefault import eflowObjectCreatorToolDefault
-        ObjectCreatorTool=eflowObjectCreatorToolDefault("eflowObjectCreatorTool_"+nameModifier)
-    except:
-        mlog.error("could not import eflowRec.eflowObjectCreatorTool")
-        print traceback.format_exc()
-        return False
-
-    if "LC" == nameModifier:
-        ObjectCreatorTool.LCMode=True
-        ObjectBuilder.EflowClustersOutputName="PFOClusters_JetETMiss_LC"
-        ObjectBuilder.EflowCaloObjectsName="eflowCaloObjects_LC"
-        if jobproperties.eflowRecFlags.eflowAlgType == "EOverP":
-            ObjectCreatorTool.PFOOutputName = 'EOverP'
-            ObjectCreatorTool.EOverPMode = True
-        else:
-            ObjectCreatorTool.PFOOutputName="JetETMiss_LCPFO"
-
-    if jobproperties.eflowRecFlags.eflowAlgType == "EOverP":
-        ObjectCreatorTool.PFOOutputName = 'EOverP'
-        ObjectCreatorTool.EOverPMode = True
-        ObjectBuilder.EflowClustersOutputName="eflowCluster01"
-
-    ObjectBuilder.PrivateToolList += [ObjectCreatorTool]
-
-    from AthenaCommon.AlgSequence import AlgSequence
-    topSequence = AlgSequence()
-    topSequence += ObjectBuilder
-
-    return True
diff --git a/Reconstruction/eflowRec/python/eflowObjectCreatorToolDefault.py b/Reconstruction/eflowRec/python/eflowObjectCreatorToolDefault.py
deleted file mode 100644
index 284d273edc1..00000000000
--- a/Reconstruction/eflowRec/python/eflowObjectCreatorToolDefault.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging
-from AthenaCommon.JobProperties import jobproperties
-import traceback
-# import the base class
-from eflowRec.eflowRecConf import eflowObjectCreatorTool
-
-class eflowObjectCreatorToolDefault(eflowObjectCreatorTool) :
-
-    def __init__(self, name="eflowObjectCreatorToolDefault"): 
-
-        eflowObjectCreatorTool.__init__( self, name )
-
-        mlog = logging.getLogger( 'eflowObjectCreatorToolDefault::__init__ ' )
-        mlog.info("entering")
-
-        try:
-            from AthenaCommon.AppMgr import ToolSvc
-        except:
-            mlog.error("could not import ToolSvc")
-            print traceback.format_exc()
-            return False
-        
-        try:
-            from TrackVertexAssociationTool.TrackVertexAssociationToolConf import CP__TightTrackVertexAssociationTool        
-            PFlowTrackVertexAssociationTool = CP__TightTrackVertexAssociationTool(name="PFlowTightCPTool", dzSinTheta_cut=2.0, doPV=True)
-        except:
-            mlog.error("could not import CP__TightTrackVertexAssociationTool")
-            print traceback.format_exc()
-            return False
-
-        ToolSvc += PFlowTrackVertexAssociationTool
-        
-        self.TrackVertexAssociationTool = PFlowTrackVertexAssociationTool
-        
-        from eflowRec.eflowRecFlags import jobproperties
-        gmFlag=""# default set to "golden1" for goldenMode. In the end this should come from this flag jobproperties.eflowRecFlags.goldenModeString()
-        self.goldenModeString=gmFlag
-        print "Configuring eflowObjectCreatorTool with goldenModeString: ",gmFlag
-
-        if jobproperties.eflowRecFlags.useAODReductionClusterMomentList == True:
-            self.UseAODReductionMomentList = True
diff --git a/Reconstruction/eflowRec/python/eflowPreparationGetter.py b/Reconstruction/eflowRec/python/eflowPreparationGetter.py
deleted file mode 100644
index aea01ef299f..00000000000
--- a/Reconstruction/eflowRec/python/eflowPreparationGetter.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging  # loads logger 
-from RecExConfig.Configured import Configured # import base class
-
-class eflowPreparationGetter ( Configured )  :  # python way to define inheritance
-
-    _outputType = "eflowCaloObjectContainer"
-    _output = { _outputType : "eflowCaloObjects01" }
-
-    def configure(self):
-
-        mlog = logging.getLogger( 'eflowPreparationGetter:configure :' )
-        mlog.info("Output="+self.outputKey() ) # prints an info message
-
-        from eflowRec.eflowCaloSetup import setup_eflowCaloObjectCreator
-        return setup_eflowCaloObjectCreator(self, "EM", mlog)
-
-    def outputKey(self):
-        return self._output[self._outputType]
-
-    def outputType(self):
-        return self._outputType
-
-    def eflowPreparationHandle(self):
-        return self._eflowPreparationHandle
diff --git a/Reconstruction/eflowRec/python/eflowPreparationGetter_LC.py b/Reconstruction/eflowRec/python/eflowPreparationGetter_LC.py
deleted file mode 100644
index 0ada9e97083..00000000000
--- a/Reconstruction/eflowRec/python/eflowPreparationGetter_LC.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging  # loads logger 
-from RecExConfig.Configured import Configured # import base class
-
-class eflowPreparationGetter_LC ( Configured )  :  # python way to define inheritance
-
-    _outputType = "eflowCaloObjectContainer"
-    _output = { _outputType : "eflowCaloObjects_LC" }
-
-    def configure(self):
-
-        mlog = logging.getLogger( 'eflowPreparationGetter_LC:configure :' )
-        mlog.info("Output="+self.outputKey() ) # prints an info message
-
-        from eflowRec.eflowCaloSetup import setup_eflowCaloObjectCreator
-        return setup_eflowCaloObjectCreator(self, "LC", mlog)
-
-    def outputKey(self):
-        return self._output[self._outputType]
-
-    def outputType(self):
-        return self._outputType
-
-    def eflowPreparationHandle(self):
-        return self._eflowPreparationHandle
diff --git a/Reconstruction/eflowRec/python/eflowRecoverSplitShowersSetup.py b/Reconstruction/eflowRec/python/eflowRecoverSplitShowersSetup.py
deleted file mode 100644
index 234349e30d1..00000000000
--- a/Reconstruction/eflowRec/python/eflowRecoverSplitShowersSetup.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging  # loads logger                           
-import traceback # to allow printout of trace back
-from RecExConfig.Configured import Configured # import base class 
-
-def setup_eflowRecoverSplitShowers(Configured, nameModifier,mlog):
-
-    if nameModifier != "EM" and nameModifier != "LC":
-        mlog.error("Invalid calorimeter scale was specified : should be LC or EM, but was "+nameModifier)
-        return False
-
-    if "EM" == nameModifier:
-
-        try:
-            from eflowRec.eflowRecConf import eflowCellEOverPTool_mc12_JetETMiss
-            CellEOverPTool=eflowCellEOverPTool_mc12_JetETMiss()
-        except:
-            mlog.error("could not import eflowRec.eflowCellEOverPTool_mc12")
-            print traceback.format_exc()
-            return False
-        
-        Configured.eflowCellEOverPTool=CellEOverPTool
-
-    elif "LC" == nameModifier:
-        try:
-            from eflowRec.eflowRecConf import eflowCellEOverPTool_mc12_LC
-            CellEOverPTool=eflowCellEOverPTool_mc12_LC()
-        except:
-            mlog.error("could not import eflowRec.eflowCellEOverPTool_mc12_LC")
-            print traceback.format_exc()
-            return False
-
-        Configured.eflowCellEOverPTool=CellEOverPTool
-    
- 
-    from eflowRec.eflowRecFlags import jobproperties
-    
-    if jobproperties.eflowRecFlags.recoverIsolatedTracks == True:
-        Configured.RecoverIsolatedTracks = True
-
-    if jobproperties.eflowRecFlags.useUpdated2015ChargedShowerSubtraction == False:
-        Configured.useUpdated2015ChargedShowerSubtraction = False
-        
-    try:
-        from eflowRec.eflowRecConf import PFTrackClusterMatchingTool
-        MatchingTool = PFTrackClusterMatchingTool()
-    except:
-        mlog.error("could not import eflowRec.PFTrackClusterMatchingTool")
-        print traceback.format_exc()
-        return False
-    MatchingTool.TrackPositionType   = 'EM2EtaPhi' # str
-    MatchingTool.ClusterPositionType = 'PlainEtaPhi' # str
-    MatchingTool.DistanceType        = 'EtaPhiSquareDistance' # str
-    MatchingTool.MatchCut = 0.2*0.2 # float
-    Configured.PFTrackClusterMatchingTool = MatchingTool
-
-    return True
diff --git a/Reconstruction/eflowRec/python/eflowRecoverSplitShowersToolDefault.py b/Reconstruction/eflowRec/python/eflowRecoverSplitShowersToolDefault.py
deleted file mode 100644
index a611afb6baf..00000000000
--- a/Reconstruction/eflowRec/python/eflowRecoverSplitShowersToolDefault.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging  # loads logger 
-from AthenaCommon.JobProperties import jobproperties
-
-from eflowRec.eflowRecConf import eflowRecoverSplitShowersTool
-
-class eflowRecoverSplitShowersToolDefault ( eflowRecoverSplitShowersTool )  :  # python way to define inheritance
-
-    def __init__(self,name="eflowRecoverSplitShowersToolDefault"):
-
-        eflowRecoverSplitShowersTool.__init__(self,name)
-
-        mlog = logging.getLogger( 'eflowRecoverSplitShowersToolDefault::__init__ ' )
-        mlog.info("entering")
-
-        from eflowRec.eflowRecoverSplitShowersSetup import setup_eflowRecoverSplitShowers
-        return setup_eflowRecoverSplitShowers(self,"EM",mlog)
diff --git a/Reconstruction/eflowRec/python/eflowRecoverSplitShowersToolDefault_LC.py b/Reconstruction/eflowRec/python/eflowRecoverSplitShowersToolDefault_LC.py
deleted file mode 100644
index a1668de6e42..00000000000
--- a/Reconstruction/eflowRec/python/eflowRecoverSplitShowersToolDefault_LC.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging  # loads logger 
-from AthenaCommon.JobProperties import jobproperties
-
-from eflowRec.eflowRecConf import eflowRecoverSplitShowersTool
-
-class eflowRecoverSplitShowersToolDefault_LC ( eflowRecoverSplitShowersTool )  :  # python way to define inheritance
-
-    def __init__(self,name="eflowRecoverSplitShowersToolDefault_LC"):
-
-        eflowRecoverSplitShowersTool.__init__(self,name)
-
-        mlog = logging.getLogger( 'eflowRecoverSplitShowersToolDefault::__init__ ' )
-        mlog.info("entering")
-
-        from eflowRec.eflowRecoverSplitShowersSetup import setup_eflowRecoverSplitShowers
-        return setup_eflowRecoverSplitShowers(self,"LC",mlog)
diff --git a/Reconstruction/eflowRec/python/eflowSetupParticleCreator.py b/Reconstruction/eflowRec/python/eflowSetupParticleCreator.py
deleted file mode 100644
index 04d067f77bc..00000000000
--- a/Reconstruction/eflowRec/python/eflowSetupParticleCreator.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from AthenaCommon.Logging import logging
-import traceback
-
-class eflowSetupParticleCreator:
-
-    def setup(self):
-
-         mlog = logging.getLogger( 'eflowSetupParticleCreator::setup' )
-
-         try:
-             from AthenaCommon.AppMgr import ToolSvc
-         except:
-             mlog.error("could not import ToolSvc")
-             print traceback.format_exc()
-             return False
-
-         try:
-             from TrkExTools.AtlasExtrapolator import AtlasExtrapolator
-             eflowExtrapolator = AtlasExtrapolator(name = "eflowExtrapolator")
-         except:
-             mlog.error("could not import AtlasExtrapolator from TrkExTools.AtlasExtrapolator")
-             print traceback.format_exc()
-             return False
-
-         ToolSvc+=eflowExtrapolator
-
-         try:
-             from TrkTrackSummaryTool.AtlasTrackSummaryTool import AtlasTrackSummaryTool
-             eflowTrackSummaryTool = AtlasTrackSummaryTool(name = "eflowTrackSummaryTool")
-         except:
-             mlog.error("could not import AtlasTrackSummaryTool from TrkTrackSummaryTool.AtlasTrackSummaryTool")
-             print traceback.format_exc()
-             return False
-
-         ToolSvc+=eflowTrackSummaryTool
-
-         try:
-             from TrkParticleCreator.TrkParticleCreatorConf import  Trk__TrackParticleCreatorTool
-             eflowParticleCreatorTool = Trk__TrackParticleCreatorTool(name = "eflowParticleCreatorTool",Extrapolator = eflowExtrapolator, TrackSummaryTool = eflowTrackSummaryTool)
-         except:
-             mlog.error("could not import Trk__TrackParticleCreatorTool from TrkParticleCreator.TrkParticleCreatorConf")
-             print traceback.format_exc()
-             return False
-
-        
-         
-         ToolSvc += eflowParticleCreatorTool
-
-         return eflowParticleCreatorTool
diff --git a/Reconstruction/eflowRec/share/PFlowMTConfig.py b/Reconstruction/eflowRec/share/PFlowMTConfig.py
index 23ec2f8d586..9b0867375cb 100644
--- a/Reconstruction/eflowRec/share/PFlowMTConfig.py
+++ b/Reconstruction/eflowRec/share/PFlowMTConfig.py
@@ -159,12 +159,12 @@ PFAlgorithm.BaseToolList = [PFMomentCalculatorTool]
 from eflowRec.eflowRecConf import PFLCCalibTool
 PFLCCalibTool = PFLCCalibTool("PFLCCalibTool")
 
-from eflowRec.eflowLocalHadCal import eflowLocalHadCal
-LocalHadCal = eflowLocalHadCal()
-Calib = LocalHadCal.eflowCaloClusterLocalCalib("PFLCCalibTool")
-CalibOO = LocalHadCal.eflowCaloClusterLocalCalibOO("PFLCCalibTool")
-CalibOOPi0 = LocalHadCal.eflowCaloClusterLocalCalibOOPi0("PFLCCalibTool")
-CalibDM = LocalHadCal.eflowCaloClusterLocalCalibDM("PFLCCalibTool")
+from eflowRec.PFLocalHadCal import PFLocalHadCal
+LocalHadCal = PFLocalHadCal()
+Calib = LocalHadCal.PFCaloClusterLocalCalib("PFLCCalibTool")
+CalibOO = LocalHadCal.PFCaloClusterLocalCalibOO("PFLCCalibTool")
+CalibOOPi0 = LocalHadCal.PFCaloClusterLocalCalibOOPi0("PFLCCalibTool")
+CalibDM = LocalHadCal.PFCaloClusterLocalCalibDM("PFLCCalibTool")
 
 from CaloRec.CaloTopoClusterFlags import jobproperties
 if not (jobproperties.CaloTopoClusterFlags.doTopoClusterLocalCalib()):
diff --git a/Reconstruction/eflowRec/share/eflowJetMode_example_myAlgs.py b/Reconstruction/eflowRec/share/eflowJetMode_example_myAlgs.py
deleted file mode 100644
index 3260f276b2c..00000000000
--- a/Reconstruction/eflowRec/share/eflowJetMode_example_myAlgs.py
+++ /dev/null
@@ -1,35 +0,0 @@
-
-# if you want calibration hit info in your d3pd and have the right packages checked out you can uncomment the block below
-#from MakeCellInfo.MakeCellInfoConf import MakeCalCellInfo
-#calCellInfo = MakeCalCellInfo()
-#calCellInfo.EflowObjectsName="eflowObjects_FullMode"
-#topSequence+=calCellInfo
-
-OutputFile='tmp.d3pd.root'
-
-from AthenaCommon.AlgSequence import AlgSequence
-theJob = AlgSequence()
-
-import D3PDMakerCoreComps
-d3pdalg = D3PDMakerCoreComps.MakerAlg( "test", theJob, file = OutputFile,                                       D3PDSvc = "D3PD::RootD3PDSvc" )
-
-from eflowD3PDMaker.eflowD3PD import eflowD3PD
-eflowD3PD(d3pdalg)
-
-#eflowRec
-from eflowD3PDMaker.eflowD3PDObject import *
-from D3PDMakerCoreComps.D3PDObject import D3PDObject
-eflowD3PDObject = D3PDObject (makeeflowD3PDObject, 'eflow_')
-eflowD3PDObject.defineBlock(0, 'eflow', eflowD3PDMakerConf.D3PD__eflowFillerTool)#,sgkey = "eflowObjects_FullMode")
-# you need to change the mode used in mhodgkin/eflowD3PDMaker/python/eflowD3PDObject.py to use eflowObjects_FullMode
-
-d3pdalg += eflowD3PDObject(10)
-
-# if you want calibration hit info in your d3pd and have the right packages checked out you can uncomment the block below
-#from calCellInfoD3PDMaker.calCellInfoD3PDObject import *
-#calCellInfoD3PDObject = D3PDObject(makecalCellInfoD3PDObject,'CalCellInfo_')
-#calCellInfoD3PDObject.defineBlock(0,'CallCellInfo',calCellInfoD3PDMakerConf.D3PD__calCellInfoFillerTool)
-#d3pdalg += calCellInfoD3PDObject(10)
-
-from CaloD3PDMaker.ClusterD3PDObject import ClusterD3PDObject
-d3pdalg += ClusterD3PDObject( 1 )
diff --git a/Reconstruction/eflowRec/share/eflowRec_config_MC15_JetETMiss.py b/Reconstruction/eflowRec/share/eflowRec_config_MC15_JetETMiss.py
deleted file mode 100644
index 8423b170443..00000000000
--- a/Reconstruction/eflowRec/share/eflowRec_config_MC15_JetETMiss.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from eflowRec.eflowRecFlags import jobproperties
-
-from AthenaCommon.AlgSequence import AlgSequence
-topSequence = AlgSequence()
-
-#Jet/MET algorithms - EM input and LC output
-
-from eflowRec.eflowPreparationGetter import eflowPreparationGetter
-CaloObjectBuilderGetter = eflowPreparationGetter()
-
-from eflowRec.eflowCaloObjectBuilderGetter import eflowCaloObjectBuilderGetter
-ObjectBuilderToolsGetter = eflowCaloObjectBuilderGetter()
-
-from eflowRec.eflowObjectBuilderGetter import eflowObjectBuilderGetter
-ObjectBuilderGetter = eflowObjectBuilderGetter()
-
-if not jobproperties.eflowRecFlags.eflowAlgType == "EOverP":
-    from eflowRec.eflowRecConf import eflowVertexInformationSetter
-    eflowVertexInformationSetter = eflowVertexInformationSetter("eflowVertextInformationSetter_EM")
-    topSequence += eflowVertexInformationSetter
-
-    from eflowRec.eflowRecConf import eflowOverlapRemoval
-    eflowOverlapRemoval = eflowOverlapRemoval("eflowOverlapRemoval_EM")
-    topSequence += eflowOverlapRemoval
diff --git a/Reconstruction/eflowRec/share/eflowRec_jobOptions.py b/Reconstruction/eflowRec/share/eflowRec_jobOptions.py
index 24dd3f45221..abe527dbf34 100644
--- a/Reconstruction/eflowRec/share/eflowRec_jobOptions.py
+++ b/Reconstruction/eflowRec/share/eflowRec_jobOptions.py
@@ -1,4 +1,3 @@
-#include("eflowRec/PFlowMTConfig.py") 
-include("eflowRec/eflowRec_config_MC15_JetETMiss.py")
+include("eflowRec/PFlowMTConfig.py") 
 
 from eflowRec import ScheduleCHSPFlowMods
diff --git a/Reconstruction/eflowRec/share/run_ESDSerial.py b/Reconstruction/eflowRec/share/run_ESDSerial.py
deleted file mode 100644
index 3d253ac9e1b..00000000000
--- a/Reconstruction/eflowRec/share/run_ESDSerial.py
+++ /dev/null
@@ -1,58 +0,0 @@
-from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
-athenaCommonFlags.FilesInput=["/data/hodgkinson/scratchFiles/mc15_13TeV.361022.Pythia8EvtGen_A14NNPDF23LO_jetjet_JZ2W.recon.ESD.e3668_s2832_r7968/ESD.08355655._001904.pool.root.1"] 
-
-doDumpProperties=True
-
-from RecExConfig.RecAlgsFlags import recAlgs
-recAlgs.doEFlow.set_Value_and_Lock(True)
-
-from RecExConfig.RecFlags import rec
-rec.doEgamma.set_Value_and_Lock(False)
-rec.doMuon.set_Value_and_Lock(False)
-
-#change some calo flags
-from CaloRec.CaloRecFlags import jobproperties
-jobproperties.CaloRecFlags.Enabled.set_Value_and_Lock(True)
-jobproperties.CaloRecFlags.doCaloCluster.set_Value_and_Lock(True)
-jobproperties.CaloRecFlags.doEmCluster.set_Value_and_Lock(False)
-jobproperties.CaloRecFlags.doCaloTopoCluster.set_Value_and_Lock(True)
-
-#this turns off CaloCluster2xAOD
-rec.doWritexAOD.set_Value_and_Lock(False)
-#nothing to say on these
-rec.doWriteTAG.set_Value_and_Lock(False)
-rec.doTruth.set_Value_and_Lock(False)
-rec.doAODCaloCells.set_Value_and_Lock(False)
-rec.doTrigger.set_Value_and_Lock(False)
-#Turns off xAODRingSetConfWriter
-rec.doCaloRinger.set_Value_and_Lock(False)
-
-#disables VertexCnvAlg
-from InDetRecExample.InDetJobProperties import jobproperties
-jobproperties.InDetJobProperties.doxAOD.set_Value_and_Lock(False)
-#Disables AllExecutedEvents
-rec.doFileMetaData.set_Value_and_Lock(False)
-
-athenaCommonFlags.EvtMax=1
-include ("RecExCommon/RecExCommon_topOptions.py")
-topSequence.CaloTopoCluster.ClustersOutputName="CaloCalTopoClusterV2"
-topSequence.eflowEMCaloObjectBuilder.CalClustersName="CaloCalTopoClusterV2"
-#topSequence.eflowObjectBuilder_EM.OutputLevel=DEBUG
-#topSequence.eflowCaloObjectBuilder_EM.OutputLevel=DEBUG
-#topSequence.eflowEMCaloObjectBuilder.OutputLevel=DEBUG
-eflowObjectCreatorTool_update = topSequence.eflowObjectBuilder_EM.PrivateToolList[2]
-eflowObjectCreatorTool_update.PFOOutputName="JetETMissV2"
-topSequence.eflowVertextInformationSetter_EM.PFOInputName="JetETMissV2NeutralParticleFlowObjects"
-topSequence.eflowOverlapRemoval_EM.PFOInputName="JetETMissV2NeutralParticleFlowObjects"
-
-import AthenaCommon.PropertiesManip as manip
-manip.removeItemsFromList(StreamAOD,'ItemList','xAOD::PFOContainer#JetETMissChargedParticleFlowObjects')
-manip.removeItemsFromList(StreamAOD,'ItemList','xAOD::PFOAuxContainer#JetETMissChargedParticleFlowObjectsAux.')
-manip.removeItemsFromList(StreamAOD,'ItemList','xAOD::PFOContainer#JetETMissNeutralParticleFlowObjects')
-manip.removeItemsFromList(StreamAOD,'ItemList','xAOD::PFOAuxContainer#JetETMissNeutralParticleFlowObjectsAux.')
-manip.appendItemsToList(StreamAOD,'ItemList','xAOD::PFOContainer#JetETMissV2ChargedParticleFlowObjects')
-manip.appendItemsToList(StreamAOD,'ItemList','xAOD::PFOAuxContainer#JetETMissV2ChargedParticleFlowObjectsAux.')
-manip.appendItemsToList(StreamAOD,'ItemList','xAOD::PFOContainer#JetETMissV2NeutralParticleFlowObjects')
-manip.appendItemsToList(StreamAOD,'ItemList','xAOD::PFOAuxContainer#JetETMissV2NeutralParticleFlowObjectsAux.')
-
-#ServiceMgr.MessageSvc.debugLimit = 1000000
diff --git a/Reconstruction/eflowRec/share/run_eflowJetMode_example.py b/Reconstruction/eflowRec/share/run_eflowJetMode_example.py
deleted file mode 100644
index f74f301ab41..00000000000
--- a/Reconstruction/eflowRec/share/run_eflowJetMode_example.py
+++ /dev/null
@@ -1,83 +0,0 @@
-# example joboption for running eflowRec in jet mode
-# this should run in rel:  17.2.8.9 with some eflowRec tag added
-# this needs eflowJetMode_example_myAlgs.py in your run dir to run
-
-from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
-athenaCommonFlags.FilesInput=["/afs/cern.ch/user/j/jboyd/gencomm/DESDM/mc12_8TeV.147911.Pythia8_AU2CT10_jetjet_JZ1W.recon.DESDM_ALLCELLS.e1126_s1479_s1470_r3578.root"]
-#/afs/cern.ch/user/j/jboyd/gencomm/DESDM/mc12_8TeV.147911.Pythia8_AU2CT10_jetjet_JZ1W.recon.DESDM_ALLCELLS.e1126_s1479_s1470_r4534.root"]
-#/afs/cern.ch/user/j/jboyd/gencomm/DESDM/mc12_8TeV.147911.Pythia8_AU2CT10_jetjet_JZ1W.recon.DESDM_ALLCELLS.e1126_s1479_s1470_r4535.root"]
-
-doTrigger=False
-doTAG=False
-
-#Based on r3553
-
-beamType='collisions' 
-fastPoolMerge='False' 
-
-from LArROD.LArRODFlags import larRODFlags
-larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True)
-larRODFlags.NumberOfCollisions.set_Value_and_Lock(20)
-larRODFlags.UseDelta.set_Value_and_Lock(3)
-
-from CaloRec.CaloCellFlags import jobproperties
-jobproperties.CaloCellFlags.doLArCellEmMisCalib.set_Value_and_Lock(False)
-
-autoConfiguration='everything' 
-ignoreerrors='True'
-
-from RecExConfig.RecFlags import rec,Rec
-rec.doApplyAODFix.set_Value_and_Lock(False)
-from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags
-D3PDMakerFlags.TruthWriteHadrons=True
-rec.doCBNT.set_Value_and_Lock(False)
-#rec.doWriteESD.set_Value_and_Lock(False) 
-rec.doWriteAOD.set_Value_and_Lock(False)
-rec.doWriteTAG.set_Value_and_Lock(False)
-##rec.doJetMissingETTag.set_Value_and_Lock(True)
-rec.doESD.set_Value_and_Lock(False)
-rec.doTrigger=False
-rec.doTruth.set_Value_and_Lock( True )
-
-#Benedict uses this....but UserAlgs are ignored if we set this, so cannot do that
-#rec.Commissioning.set_Value_and_Lock(True)
-rec.AutoConfiguration = [ "everything" ]
-
-from AthenaCommon.JobProperties import jobproperties
-jobproperties.Beam.energy.set_Value_and_Lock(4000*Units.GeV)
-jobproperties.Beam.bunchSpacing.set_Value_and_Lock(50)
-jobproperties.Beam.numberOfCollisions.set_Value_and_Lock(20.0)
-
-from TriggerJobOpts.TriggerFlags import TriggerFlags
-TriggerFlags.AODEDMSet="AODSLIM"
-
-from MuonRecExample.MuonRecFlags import muonRecFlags
-muonRecFlags.writeSDOs=True
-
-from RecExConfig.RecAlgsFlags import recAlgs
-recAlgs.doEFlow.set_Value_and_Lock(True)
-
-#change some more calo flags
-
-from CaloRec.CaloRecFlags import jobproperties
-jobproperties.CaloRecFlags.Enabled.set_Value_and_Lock(True)
-jobproperties.CaloRecFlags.doCaloCluster.set_Value_and_Lock(True)
-jobproperties.CaloRecFlags.doCaloTopoCluster.set_Value_and_Lock(True)
-
-from CaloTools.CaloNoiseFlags import jobproperties
-jobproperties.CaloNoiseFlags.FixedLuminosity.set_Value_and_Lock(5.44) #2012? -> no its 5.44
-#jobproperties.CaloNoiseFlags.FixedLuminosity.set_Value_and_Lock(1.45) #2011
-#jobproperties.CaloNoiseFlags.FixedLuminosity.set_Value_and_Lock(0.) #2010
-
-from eflowRec.eflowRecFlags import jobproperties
-jobproperties.eflowRecFlags.runTauMode.set_Value_and_Lock(False)
-jobproperties.eflowRecFlags.useSplitShowers.set_Value_and_Lock(True)
-
-
-from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
-athenaCommonFlags.EvtMax=10
-UserAlgs = ["eflowJetMode_example_myAlgs.py"]
-include("RecExCommon/RecExCommon_topOptions.py")
-
-import AthenaCommon.PropertiesManip as manip
-
diff --git a/Reconstruction/eflowRec/src/PFTrackSelector.cxx b/Reconstruction/eflowRec/src/PFTrackSelector.cxx
index 04d417ac9ff..8078fbb509b 100644
--- a/Reconstruction/eflowRec/src/PFTrackSelector.cxx
+++ b/Reconstruction/eflowRec/src/PFTrackSelector.cxx
@@ -1,6 +1,5 @@
 #include "eflowRec/eflowTrackExtrapolatorBaseAlgTool.h"
 #include "eflowRec/PFTrackSelector.h"
-#include "InDetTrackSelectionTool/IInDetTrackSelectionTool.h"
 #include "xAODEgamma/ElectronxAODHelpers.h"
 
 
diff --git a/Reconstruction/eflowRec/src/components/eflowRec_entries.cxx b/Reconstruction/eflowRec/src/components/eflowRec_entries.cxx
index 80b6931d5fe..b9e1a7587fc 100644
--- a/Reconstruction/eflowRec/src/components/eflowRec_entries.cxx
+++ b/Reconstruction/eflowRec/src/components/eflowRec_entries.cxx
@@ -1,20 +1,9 @@
-#include "eflowRec/eflowBuilder.h"
-#include "eflowRec/eflowPreparation.h"
-#include "eflowRec/eflowCaloObjectBuilder.h"
-#include "eflowRec/eflowObjectBuilder.h"
-#include "eflowRec/eflowCellLevelSubtractionTool.h"
-#include "eflowRec/eflowRecoverSplitShowersTool.h"
-#include "eflowRec/eflowLCCalibTool.h"
-#include "eflowRec/eflowMomentCalculatorTool.h"
-#include "eflowRec/eflowClusterCollectionTool.h"
 #include "eflowRec/eflowTrackCaloExtensionTool.h"
 #include "eflowRec/eflowTrackCaloDummyExtensionTool.h"
 #include "eflowRec/PFTrackClusterMatchingTool.h"
 #include "eflowRec/eflowCellEOverPTool_mc12_JetETMiss.h"
 #include "eflowRec/eflowCellEOverPTool_mc12_LC.h"
-#include "eflowRec/eflowObjectCreatorTool.h"
 #include "eflowRec/eflowOverlapRemoval.h"
-#include "eflowRec/eflowVertexInformationSetter.h"
 #include "eflowRec/PFLeptonSelector.h"
 #include "eflowRec/PFTrackSelector.h"
 #include "eflowRec/PFClusterSelector.h"
@@ -28,12 +17,7 @@
 #include "eflowRec/PFONeutralCreatorAlgorithm.h"
 #include "GaudiKernel/DeclareFactoryEntries.h"
 
-DECLARE_ALGORITHM_FACTORY( eflowBuilder )
-DECLARE_ALGORITHM_FACTORY( eflowPreparation )
-DECLARE_ALGORITHM_FACTORY( eflowCaloObjectBuilder )
-DECLARE_ALGORITHM_FACTORY( eflowObjectBuilder )
 DECLARE_ALGORITHM_FACTORY( eflowOverlapRemoval )
-DECLARE_ALGORITHM_FACTORY( eflowVertexInformationSetter )
 DECLARE_ALGORITHM_FACTORY( PFLeptonSelector )
 DECLARE_ALGORITHM_FACTORY( PFClusterSelector )
 DECLARE_ALGORITHM_FACTORY( PFTrackSelector )
@@ -45,25 +29,14 @@ DECLARE_TOOL_FACTORY( PFRecoverSplitShowersTool )
 DECLARE_TOOL_FACTORY( PFMomentCalculatorTool )
 DECLARE_TOOL_FACTORY( PFClusterCollectionTool )
 DECLARE_TOOL_FACTORY( PFLCCalibTool )
-DECLARE_TOOL_FACTORY( eflowRecoverSplitShowersTool )
-DECLARE_TOOL_FACTORY( eflowCellLevelSubtractionTool )
-DECLARE_TOOL_FACTORY( eflowLCCalibTool )
-DECLARE_TOOL_FACTORY( eflowMomentCalculatorTool )
-DECLARE_TOOL_FACTORY( eflowClusterCollectionTool )
 DECLARE_TOOL_FACTORY( eflowTrackCaloExtensionTool )
 DECLARE_TOOL_FACTORY( eflowTrackCaloDummyExtensionTool )
 DECLARE_TOOL_FACTORY( PFTrackClusterMatchingTool )
 DECLARE_TOOL_FACTORY( eflowCellEOverPTool_mc12_JetETMiss)
 DECLARE_TOOL_FACTORY( eflowCellEOverPTool_mc12_LC)
-DECLARE_TOOL_FACTORY( eflowObjectCreatorTool )
 
 DECLARE_FACTORY_ENTRIES(eflowRec) {
-  DECLARE_ALGORITHM( eflowBuilder )
-    DECLARE_ALGORITHM( eflowPreparation )
-    DECLARE_ALGORITHM( eflowCaloObjectBuilder )
-    DECLARE_ALGORITHM( eflowObjectBuilder )
     DECLARE_ALGORITHM (eflowOverlapRemoval )
-    DECLARE_ALGORITHM ( eflowVertexInformationSetter )
     DECLARE_ALGORITHM( PFLeptonSelector )
     DECLARE_ALGORITHM( PFClusterSelector )
     DECLARE_ALGORITHM( PFTrackSelector )
@@ -75,15 +48,9 @@ DECLARE_FACTORY_ENTRIES(eflowRec) {
     DECLARE_TOOL( PFMomentCalculatorTool )
     DECLARE_TOOL( PFClusterCollectionTool )
     DECLARE_TOOL( PFLCCalibTool )
-    DECLARE_TOOL ( eflowRecoverSplitShowersTool )
-    DECLARE_TOOL ( eflowCellLevelSubtractionTool )
-    DECLARE_TOOL ( eflowMomentCalculatorTool )
-    DECLARE_TOOL ( eflowClusterCollectionTool )
-    DECLARE_TOOL ( eflowLCCalibTool )
     DECLARE_TOOL ( eflowTrackCaloExtensionTool )
     DECLARE_TOOL ( eflowTrackCaloDummyExtensionTool )
     DECLARE_TOOL ( PFTrackClusterMatchingTool )
     DECLARE_TOOL (eflowCellEOverPTool_mc12_JetETMiss)
     DECLARE_TOOL ( eflowCellEOverPTool_mc12_LC)
-    DECLARE_TOOL (eflowObjectCreatorTool )
 }
diff --git a/Reconstruction/eflowRec/src/eflowBuilder.cxx b/Reconstruction/eflowRec/src/eflowBuilder.cxx
deleted file mode 100644
index 7ccdd1e8e85..00000000000
--- a/Reconstruction/eflowRec/src/eflowBuilder.cxx
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/********************************************************************
-
-NAME:     eflowBuilder.cxx
-PACKAGE:  offline/Reconstruction/eflowRec
-
-AUTHORS:  D.R. Tovey
-CREATED:  8th November, 2001
-
-PURPOSE:  Loop over tracks and clusters to build calo objects, then 
-          loop over tracks and clusters within calo objects to build
-          eflow objects.
-
-********************************************************************/
-
-// INCLUDE HEADER FILES:
-
-#include "eflowRec/eflowBuilder.h"
-
-// INCLUDE GAUDI HEADER FILES:
- 
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/Property.h"
-#include "StoreGate/StoreGateSvc.h"
-#include "GaudiKernel/ListItem.h"
-
-#include <algorithm> 
-#include <math.h>
-
-//  END OF HEADER FILES INCLUDE
-
-//  CONSTRUCTOR:
-    
-eflowBuilder::eflowBuilder(const std::string& name, 
-		       ISvcLocator* pSvcLocator): 
-  AthAlgorithm(name, pSvcLocator), 
-  m_eflowPreparationAlgName("eflowPreparation/caloObjectBuilderAlg"),
-  m_eflowObjectBuilderAlgName("eflowObjectBuilder/objectBuilderAlg"),
-  m_eflowQuantitiesAlgName("eflowQuantities/quantAlg")
-{
-
-// The following properties can be specified at run-time
-// (declared in jobOptions file)
-                            
-  // Names of various sub-algorithms:
-  declareProperty("eflowPreparationAlgName", 
-		  m_eflowPreparationAlgName);
-  declareProperty("eflowObjectBuilderAlgName", m_eflowObjectBuilderAlgName);
-  declareProperty("eflowQuantitiesAlgName", m_eflowQuantitiesAlgName);
-  m_eflowPreparationAlg = nullptr;
-  m_eflowObjectBuilderAlg = nullptr;
-  m_eflowQuantitiesAlg = nullptr;
-}
-
-eflowBuilder::~eflowBuilder()
-{ }
-
-StatusCode eflowBuilder::initialize()
-{
-
-  Algorithm* pAlg;
-  StatusCode sc;
-
-  // Get pointer to StoreGateSvc and cache:
-
-  //////////////////////////////////////////////////////////////////
-  // Create the eflowPreparation Algorithm:
-
-  std::string type, name;
-
-  ListItem caloObjectBuilderAlg(m_eflowPreparationAlgName);
-  sc = createSubAlgorithm(caloObjectBuilderAlg.type(), 
-			  caloObjectBuilderAlg.name(), pAlg);
-
-  if( sc.isFailure() ) 
-  {
-    ATH_MSG_DEBUG( "Unable to create " << m_eflowPreparationAlgName );
-    m_eflowPreparationAlg = nullptr;
-  } 
-  else
-  {
-    m_eflowPreparationAlg = dynamic_cast<AthAlgorithm*>(pAlg);
-  }
-  
-  //////////////////////////////////////////////////////////////////
-  // Create the eflowObjectBuilder sub-algorithm:
-
-  ListItem objectBuilderAlg(m_eflowObjectBuilderAlgName);
-  sc = createSubAlgorithm(objectBuilderAlg.type(), 
-			  objectBuilderAlg.name(), pAlg);
-  if( sc.isFailure() ) 
-  {
-    ATH_MSG_DEBUG( "Unable to create " << m_eflowObjectBuilderAlgName );
-    m_eflowObjectBuilderAlg = nullptr;
-  } 
-  else
-  {
-    m_eflowObjectBuilderAlg = dynamic_cast<AthAlgorithm*>(pAlg);
-  }
-
-  //////////////////////////////////////////////////////////////////
-  // Create the eflowQuantities sub-algorithm:
-
-  ListItem quantAlg(m_eflowQuantitiesAlgName);
-  sc = createSubAlgorithm(quantAlg.type(), quantAlg.name(), pAlg);
-  if( sc.isFailure() ) 
-  {
-    ATH_MSG_DEBUG( "Unable to create " << m_eflowQuantitiesAlgName );
-    m_eflowQuantitiesAlg = nullptr;
-  } 
-  else
-  {
-    m_eflowQuantitiesAlg = dynamic_cast<AthAlgorithm*>(pAlg);
-  }
-
-/////////////////////////////////////////////////////////////////
-
-  ATH_MSG_VERBOSE( "Using the Algorithms:"  );
-  ATH_MSG_VERBOSE(  m_eflowPreparationAlgName  );
-  ATH_MSG_VERBOSE( m_eflowObjectBuilderAlgName  );
-  ATH_MSG_VERBOSE( m_eflowQuantitiesAlgName  );
-
-
-  return sc;
-}
-
-
-/////////////////////////////////////////////////////////////////
-
-StatusCode eflowBuilder::finalize()
-{
-  return StatusCode::SUCCESS;
-}
-
-/////////////////////////////////////////////////////////////////
-
-// ATHENA EXECUTE METHOD:
-   
-StatusCode eflowBuilder::execute()
-{  
-
-  StatusCode sc;
-
-  ATH_MSG_DEBUG( "Executing eflowBuilder"  );
-
-  // Build Calorimeter Objects
-
-  if (m_eflowPreparationAlg)
-    {
-      sc = m_eflowPreparationAlg->execute();
-    }
-
-  // Build Energy Flow Objects
-
-  if (sc.isSuccess() && m_eflowObjectBuilderAlg)
-    {
-      sc = m_eflowObjectBuilderAlg->execute();
-    }
-
-  // Calculate parameters
-
-  if (sc.isSuccess() && m_eflowQuantitiesAlg)
-    {
-      sc = m_eflowQuantitiesAlg->execute();
-    }
-
-  return StatusCode::SUCCESS;
-
-}
diff --git a/Reconstruction/eflowRec/src/eflowCaloObjectBuilder.cxx b/Reconstruction/eflowRec/src/eflowCaloObjectBuilder.cxx
deleted file mode 100644
index 4302f2e57dd..00000000000
--- a/Reconstruction/eflowRec/src/eflowCaloObjectBuilder.cxx
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/********************************************************************
-
-NAME:     eflowCaloObjectBuilder.cxx
-PACKAGE:  offline/Reconstruction/eflowRec
-
-AUTHORS:  M.Hodgkinson
-CREATED:  24th January, 2005
-
-********************************************************************/
-
-#include "eflowRec/eflowCaloObjectBuilder.h"
-#include "eflowRec/eflowCaloObject.h"
-#include "eflowRec/eflowRecCluster.h"
-#include "eflowRec/eflowRecTrack.h"
-#include "eflowRec/eflowTrackClusterLink.h"
-#include "eflowRec/eflowISubtractionAlgTool.h"
-#include "eflowRec/eflowRecoverSplitShowersTool.h"
-#include "eflowRec/eflowLCCalibTool.h"
-#include "eflowRec/eflowObjectCreatorTool.h"
-
-#include "FourMomUtils/P4DescendingSorters.h"
-
-#include "StoreGate/StoreGateSvc.h"
-
-#include "GaudiKernel/ListItem.h"
-
-#include <iostream>
-using namespace std;
-
-
-eflowCaloObjectBuilder::eflowCaloObjectBuilder(const std::string& name,  ISvcLocator* pSvcLocator):
-  AthAlgorithm(name, pSvcLocator),
-  m_eflowClustersOutputName("PFOClusters_JetETMiss"),
-  m_eflowCaloObjectsName("eflowCaloObjects01"),
-  m_eflowRecTracksName("eflowRecTracks01"),
-  m_eflowRecClustersName("eflowRecClusters01"),
-  m_storeGate(nullptr),
-  m_tools(this)
-{
-  /* The following properties can be specified at run-time (declared in jobOptions file) */
-  /* Tool configuration */
-  declareProperty( "PrivateToolList",  m_tools, "List of Private AlgTools" );
-  /* Name if eflow cluster container to be created */
-  declareProperty("EflowClustersOutputName",m_eflowClustersOutputName);
-  /* Name of eflow Calo Object to be retrieved */
-  declareProperty("EflowCaloObjectsName",m_eflowCaloObjectsName);
-  /* Name of eflow Rec Track to be retrieved */
-  declareProperty("EflowRecTracksName",m_eflowRecTracksName);
-  /* Name of eflow Rec Cluster to be retrieved */
-  declareProperty("EflowRecClustersName",m_eflowRecClustersName);
-}
-
-eflowCaloObjectBuilder::~eflowCaloObjectBuilder() { }
-
-StatusCode eflowCaloObjectBuilder::initialize() {
-  
-  msg(MSG::DEBUG) << "Initialising eflowCaloObjectBuilder " << endmsg;
-
-  if (service("StoreGateSvc", m_storeGate).isFailure()) {
-    msg(MSG::WARNING) << "Unable to retrieve pointer to StoreGateSvc" << endmsg;
-    return StatusCode::SUCCESS;
-  } 
-
-  /* Tool service */
-  IToolSvc* myToolSvc;
-  if ( service("ToolSvc",myToolSvc).isFailure() ) {
-    msg(MSG::WARNING) << " Tool Service Not Found" << endmsg;
-    return StatusCode::SUCCESS;
-  }
-
-  if ( m_tools.retrieve().isFailure() ) {
-    msg(MSG::WARNING) << "Failed to retrieve " << m_tools << endmsg;
-    return StatusCode::SUCCESS;
-  } else {
-    msg(MSG::VERBOSE) << "Retrieved " << m_tools << endmsg;
-  }
-  
-  // print the list of tools - taken from JetRec/JetAlgorithm.cxx
-  printTools();
-
-  return StatusCode::SUCCESS;
-}
-
-StatusCode eflowCaloObjectBuilder::execute(){
-
-  msg(MSG::DEBUG) << "Executing eflowCaloObjectBuilder" << endmsg;
-  StatusCode sc;
-
-  /* Retrieve the eflowCaloObject container, return if not existing */
-  const eflowCaloObjectContainer* caloObjectContainer;
-  sc = m_storeGate->retrieve(caloObjectContainer,m_eflowCaloObjectsName);
-  if(sc.isFailure() || !caloObjectContainer ){
-    msg(MSG::WARNING) <<" no eflow calo object container" <<endmsg; 
-    return StatusCode::SUCCESS;
-  }
-
-  /* Retrieve the eflowRecTrack container, return if not existing */
-  const eflowRecTrackContainer* recTrackContainer;
-  sc = m_storeGate->retrieve(recTrackContainer,m_eflowRecTracksName);
-  if(sc.isFailure() || !recTrackContainer ){
-    msg(MSG::WARNING) <<" no eflow rec track container" <<endmsg;
-    return StatusCode::SUCCESS;
-  }
-
-  /* Retrieve the eflowRecCluster container, return if not existing */
-  const eflowRecClusterContainer* recClusterContainer;
-  sc = m_storeGate->retrieve(recClusterContainer,m_eflowRecClustersName);
-  if(sc.isFailure() || !recClusterContainer ){
-    msg(MSG::WARNING) <<" no eflow rec cluster container" <<endmsg;
-    return StatusCode::SUCCESS;
-  }
-
-  /* Run the AlgTools
-   * --> CellLevelSubtractionTool, RecoverSplitShowersTool */
-  ToolHandleArray< eflowISubtractionAlgTool >::iterator itAlgTool = m_tools.begin();
-  ToolHandleArray< eflowISubtractionAlgTool >::iterator lastAlgTool  = m_tools.end();
-  for (; itAlgTool != lastAlgTool; ++itAlgTool) {
-    (*itAlgTool)->execute(const_cast<eflowCaloObjectContainer*>(caloObjectContainer),
-                          const_cast<eflowRecTrackContainer*>(recTrackContainer),
-                          const_cast<eflowRecClusterContainer*>(recClusterContainer));
-  }
-
-  for (auto thisEFTrack : *recTrackContainer){
-    ATH_MSG_DEBUG("This efRecTrack has E,pt,eta and phi of " << thisEFTrack->getTrack()->e() << ", " << thisEFTrack->getTrack()->pt() << ", " << thisEFTrack->getTrack()->eta() << " and " << thisEFTrack->getTrack()->phi());
-  }
-
-  for (auto thisEFCluster : *recClusterContainer){
-    ATH_MSG_DEBUG("This efRecCluster has E,pt,eta and phi of " << thisEFCluster->getCluster()->e() << "," << thisEFCluster->getCluster()->pt() << ", " << thisEFCluster->getCluster()->eta() << " and " << thisEFCluster->getCluster()->phi());
-  }
-  
-  return StatusCode::SUCCESS;
-
-}
-
-StatusCode eflowCaloObjectBuilder::finalize() { return StatusCode::SUCCESS; }
-
-void eflowCaloObjectBuilder::printTools() {
-  // print the list of tools - taken from JetRec/JetAlgorithm.cxx
-  ATH_MSG_VERBOSE(" ");
-  ATH_MSG_VERBOSE("List of tools in execution sequence of eflowCaloObjectBuilder:");
-  ATH_MSG_VERBOSE("------------------------------------");
-  ATH_MSG_VERBOSE(" ");
-  ToolHandleArray<eflowISubtractionAlgTool>::iterator itTool = m_tools.begin();
-  ToolHandleArray<eflowISubtractionAlgTool>::iterator lastTool = m_tools.end();
-  unsigned int toolCtr = 0;
-  for (; itTool != lastTool; itTool++) {
-    toolCtr++;
-    ATH_MSG_VERBOSE(std::setw(2) << std::setiosflags(std::ios_base::right) << toolCtr << ".) "
-    << std::resetiosflags(std::ios_base::right) << std::setw(36) << std::setfill('.')
-    << std::setiosflags(std::ios_base::left) << (*itTool)->type() << std::setfill('.')
-		    << (*itTool)->name() << std::setfill(' '));
-  }
-  ATH_MSG_VERBOSE(" ");
-  ATH_MSG_VERBOSE("------------------------------------");
-}
diff --git a/Reconstruction/eflowRec/src/eflowCellLevelSubtractionTool.cxx b/Reconstruction/eflowRec/src/eflowCellLevelSubtractionTool.cxx
deleted file mode 100644
index d2caad4a287..00000000000
--- a/Reconstruction/eflowRec/src/eflowCellLevelSubtractionTool.cxx
+++ /dev/null
@@ -1,486 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-
-/********************************************************************
-
-NAME:     eflowCellLevelSubtractionTool.h
-PACKAGE:  offline/Reconstruction/eflowRec
-
-AUTHORS:  M.Hodgkinson
-CREATED:  25th January, 2005
-
-AUTHOR: A.Hostiuc
-UPDATED: May 29th, 2017
-
-********************************************************************/
-
-#include "eflowRec/eflowCellLevelSubtractionTool.h"
-
-#include "eflowRec/eflowRecCluster.h"
-#include "eflowRec/eflowRecTrack.h"
-#include "eflowRec/eflowTrackClusterLink.h"
-#include "eflowRec/eflowDatabase.h"
-#include "eflowRec/eflowDepthCalculator.h"
-#include "eflowRec/eflowTrackCaloPoints.h"
-#include "eflowRec/IEFlowCellEOverPTool.h"
-#include "eflowRec/eflowEEtaBinnedParameters.h"
-#include "eflowRec/eflowLayerIntegrator.h"
-#include "eflowRec/PFTrackClusterMatchingTool.h"
-#include "eflowRec/cycle.h"
-#include "eflowRec/eflowRingSubtractionManager.h"
-#include "eflowRec/eflowCellSubtractionFacilitator.h"
-#include "eflowRec/eflowSubtractor.h"
-#include "eflowRec/eflowRingThicknesses.h"
-
-#include "CaloEvent/CaloCluster.h"
-
-#include "xAODCaloEvent/CaloCluster.h"
-#include "xAODCaloEvent/CaloClusterKineHelper.h"
-
-#include "xAODPFlow/PFO.h"
-
-#include "eflowRec/eflowCaloObject.h"
-#include "eflowRec/eflowCaloObjectMaker.h"
-#include "GaudiKernel/MsgStream.h"
-
-#include "GaudiKernel/ListItem.h"
-
-#include <algorithm>
-#include <iostream>
-#include <cmath>
-#include <vector>
-
-
-using namespace eflowSubtract;
-
-eflowCellLevelSubtractionTool::eflowCellLevelSubtractionTool(const std::string& type,const std::string& name,const IInterface* parent) :
-  AthAlgTool( type, name, parent),
-  m_eflowCaloObjectContainer(nullptr),
-  m_eflowTrackContainer(nullptr),
-  m_eflowClusterContainer(nullptr),
-  m_matchingTool("PFTrackClusterMatchingTool/CalObjBldMatchingTool", this),
-  m_matchingToolForPull_015("PFTrackClusterMatchingTool/PFPullMatchingTool_015", this),
-  m_matchingToolForPull_02("PFTrackClusterMatchingTool/PFPullMatchingTool_02", this),
-  m_binnedParameters(nullptr),
-  m_integrator(nullptr),
-  m_theEOverPTool("eflowCellEOverPTool",this),
-  //m_rCell(0.75),
-  m_subtractionSigmaCut(1.5),
-  m_consistencySigmaCut(1.0),
-  m_calcEOverP(false),
-  m_goldenModeString(""),
-  m_nMatchesInCellLevelSubtraction(1),
-  m_useUpdated2015ChargedShowerSubtraction(true)
-
-{ 
-  declareProperty("PFTrackClusterMatchingTool", m_matchingTool, "The track-cluster matching tool");
-  declareProperty("PFTrackClusterMatchingTool_015", m_matchingToolForPull_015, "The 0.15 track-cluster matching tool to calculate the pull");
-  declareProperty("PFTrackClusterMatchingTool_02", m_matchingToolForPull_02, "The 0.2 track-cluster matching tool to calculate the pull");
-  declareProperty("eflowCellEOverPTool", m_theEOverPTool, "Energy Flow E/P Values and Shower Paremeters Tool");
-  declareProperty("SubtractionSigmaCut",m_subtractionSigmaCut);
-  declareProperty("ConsistencySigmaCut",m_consistencySigmaCut);
-  declareProperty("CalcEOverP",m_calcEOverP,"Whether to disable energy flow");
-  declareProperty("goldenModeString",m_goldenModeString,"run in golden match mode only?");
-  declareProperty("nMatchesInCellLevelSubtraction",m_nMatchesInCellLevelSubtraction,"Number of clusters to match");
-  declareProperty("useUpdated2015ChargedShowerSubtraction",m_useUpdated2015ChargedShowerSubtraction,"Toggle whether to use updated 2015 charged shower subtraction, which disables the shower subtraction in high calorimeter energy density region");
-}
-
-eflowCellLevelSubtractionTool::~eflowCellLevelSubtractionTool() {
-}
-
-StatusCode eflowCellLevelSubtractionTool::initialize(){
-  StatusCode sc;
-
-  /* tool service */
-  IToolSvc* myToolSvc;
-  sc = service("ToolSvc", myToolSvc);
-
-  if (m_matchingTool.retrieve().isFailure()) {
-    msg(MSG::WARNING) << "Cannot find PFTrackClusterMatchingTool" << endmsg;
-  }
-
-  if (m_matchingToolForPull_015.retrieve().isFailure()) {
-    msg(MSG::WARNING) << "Cannot find PFTrackClusterMatchingTool_2" << endmsg;
-  }
-
-  if (m_matchingToolForPull_02.retrieve().isFailure()) {
-    msg(MSG::WARNING) << "Cannot find PFTrackClusterMatchingTool_2" << endmsg;
-  }
-
-  m_integrator = std::make_unique<eflowLayerIntegrator>(0.032, 1.0e-3, 3.0);
-  m_binnedParameters = std::make_unique<eflowEEtaBinnedParameters>();
-  
-  sc = m_theEOverPTool->execute(m_binnedParameters.get());
-
-  if (sc.isFailure()) {
-    msg(MSG::WARNING) << "Could not execute eflowCellEOverPTool " << endmsg;
-    return StatusCode::SUCCESS;
-  }
-
-  return StatusCode::SUCCESS;
-
-}
-
-void eflowCellLevelSubtractionTool::execute(eflowCaloObjectContainer* theEflowCaloObjectContainer, eflowRecTrackContainer* recTrackContainer, eflowRecClusterContainer* recClusterContainer) {
-
-  ATH_MSG_VERBOSE("Executing eflowCellLevelSubtractionTool");
-
-  m_eflowCaloObjectContainer = theEflowCaloObjectContainer;
-  m_eflowTrackContainer = recTrackContainer;
-  m_eflowClusterContainer = recClusterContainer;
-
-
-  /* Add each track to its best matching cluster's eflowCaloObject */
-  matchAndCreateEflowCaloObj(m_nMatchesInCellLevelSubtraction);
-
-  if (msgLvl(MSG::DEBUG)) printAllClusters(recClusterContainer);
-
-
-  /* Check e/p mode - only perform subtraction if not in this mode */
-  if (!m_calcEOverP) {performSubtraction();}
-
-   
-  /* Check e/p mode - only perform radial profiles calculations if in this mode */
-  if (m_calcEOverP) {calculateRadialEnergyProfiles();}
-
-
-}
-
-int eflowCellLevelSubtractionTool::matchAndCreateEflowCaloObj(int n) {
-  int nMatches(0);
-
-  /* Create eflowTrackClusterLink after matching */
-  unsigned int nTrack = m_eflowTrackContainer->size();
-  for (unsigned int iTrack=0; iTrack<nTrack; ++iTrack) {
-    eflowRecTrack *thisEfRecTrack = static_cast<eflowRecTrack*>(m_eflowTrackContainer->at(iTrack));
-
-     /* Add cluster matches needed for pull calculation*/
-    std::vector<eflowRecCluster*> bestClusters_015 = m_matchingToolForPull_015->doMatches(thisEfRecTrack, m_eflowClusterContainer, -1);
-    std::vector<eflowRecCluster*> bestClusters_02 = m_matchingToolForPull_02->doMatches(thisEfRecTrack, m_eflowClusterContainer, -1);
-
-    for (unsigned int imatch=0; imatch < bestClusters_015.size(); ++imatch) {
-      eflowTrackClusterLink* trackClusterLink = eflowTrackClusterLink::getInstance(thisEfRecTrack, bestClusters_015.at(imatch));
-      thisEfRecTrack->addAlternativeClusterMatch(trackClusterLink,"cone_015");    
-    }
-
-    for (unsigned int imatch=0; imatch < bestClusters_02.size(); ++imatch) {
-      eflowTrackClusterLink* trackClusterLink = eflowTrackClusterLink::getInstance(thisEfRecTrack, bestClusters_02.at(imatch));
-      thisEfRecTrack->addAlternativeClusterMatch(trackClusterLink,"cone_02");    
-    }
-
-    std::vector<eflowRecCluster*> bestClusters = m_matchingTool->doMatches(thisEfRecTrack, m_eflowClusterContainer, n);
-    if (bestClusters.empty()) { continue; }
-
-    /* Matched cluster: create TrackClusterLink and add it to both the track and the cluster (eflowCaloObject will be created later) */
-    nMatches++;
-    for (unsigned int imatch=0; imatch < bestClusters.size(); ++imatch) {
-    eflowTrackClusterLink* trackClusterLink = eflowTrackClusterLink::getInstance(thisEfRecTrack, bestClusters.at(imatch));
-    thisEfRecTrack->addClusterMatch(trackClusterLink);
-    bestClusters.at(imatch)->addTrackMatch(trackClusterLink);
-    
-    }
-  
-  }
-
-  /* Create 3 types eflowCaloObjects: track-only, cluster-only, track-cluster-link */
-  eflowCaloObjectMaker makeCaloObject;
-  int nCaloObjects = makeCaloObject.makeTrkCluCaloObjects(m_eflowTrackContainer, m_eflowClusterContainer, m_eflowCaloObjectContainer);
-  msg(MSG::DEBUG)  << "eflowCellLevelSubtractionTool created total " << nCaloObjects << " CaloObjects." << endmsg;
-
-  /* integrate cells; determine FLI; eoverp */
-  for (unsigned int iCalo=0; iCalo<m_eflowCaloObjectContainer->size(); ++iCalo) {
-    eflowCaloObject *thisEflowCaloObject = static_cast<eflowCaloObject*>(m_eflowCaloObjectContainer->at(iCalo));
-
-    thisEflowCaloObject->simulateShower(m_integrator.get(), m_binnedParameters.get(), m_useUpdated2015ChargedShowerSubtraction);
-  }
-
-  return nMatches;
-}
-
-void eflowCellLevelSubtractionTool::calculateRadialEnergyProfiles(){
-
-  msg(MSG::DEBUG)  << "Accessed radial energy profile function" << std::endl;
-
-  unsigned int nEFCaloObs = m_eflowCaloObjectContainer->size();
-  
-  for (unsigned int iEFCalOb = 0; iEFCalOb < nEFCaloObs; ++iEFCalOb) {
-    
-    eflowCaloObject* thisEflowCaloObject = m_eflowCaloObjectContainer->at(iEFCalOb);
-    
-    unsigned int nClusters = thisEflowCaloObject->nClusters();
-    
-    if (nClusters < 1) {
-    continue;
-    }
-    
-    const std::vector<eflowTrackClusterLink*>& matchedTrackList = thisEflowCaloObject->efRecLink();
-
-    int nTrackMatches = thisEflowCaloObject->nTracks();
-    
-    for (int iTrack = 0; iTrack < nTrackMatches; ++iTrack) {
-      
-      eflowRecTrack* efRecTrack = matchedTrackList[iTrack]->getTrack();
-      
-      std::vector<eflowRecCluster*> matchedClusters;
-      matchedClusters.clear();
-      std::vector<eflowTrackClusterLink*> links = efRecTrack->getClusterMatches();
-      std::vector<eflowTrackClusterLink*>::iterator itLink = links.begin();
-      std::vector<eflowTrackClusterLink*>::iterator endLink = links.end();
-        
-      for (; itLink != endLink; ++itLink) {
-	matchedClusters.push_back((*itLink)->getCluster());
-      }
-        
-      std::vector<xAOD::CaloCluster*> clusterSubtractionList;
-      std::vector<eflowRecCluster*>::const_iterator itCluster = matchedClusters.begin();
-      std::vector<eflowRecCluster*>::const_iterator endCluster = matchedClusters.end();
-      for (; itCluster != endCluster; ++itCluster) {
-	clusterSubtractionList.push_back((*itCluster)->getClusterForModification(eflowCaloObject::getClusterContainerPtr()));
-      }
-
-      eflowCellList calorimeterCellList;
-      Subtractor::makeOrderedCellList(efRecTrack->getTrackCaloPoints(),clusterSubtractionList,calorimeterCellList);
-      
-      eflowRingThicknesses ringThicknessGenerator;
-      
-      std::vector<int> layerToStoreVector;
-      std::vector<float> radiusToStoreVector;
-      std::vector<float> avgEdensityToStoreVector;
-      
-      for (int i=0; i < eflowCalo::nRegions ;i++){
-	
-	eflowCaloENUM layer = (eflowCaloENUM)i;
-	msg(MSG::DEBUG)  <<"layer is "<<layer<<std::endl;
-	double ringThickness = ringThicknessGenerator.ringThickness((eflowCaloENUM)i);
-	msg(MSG::DEBUG)  <<"ring thickness is "<<ringThickness<<std::endl;
-	
-	double eta_extr = calorimeterCellList.etaFF(layer);
-	msg(MSG::DEBUG)  <<"extrapolated eta ["<<layer<<"] is "<<eta_extr<<std::endl;
-	double phi_extr = calorimeterCellList.phiFF(layer);
-	msg(MSG::DEBUG)  <<"extrapolated phi ["<<layer<<"] is "<<phi_extr<<std::endl;
-    
-	if (eta_extr == -999.0){
-	  continue;
-	}
-        
-	int indexofRing = 0;
-	int layerToStore = -999;
-	
-	double radiusToStore = 0;
-	double totalEnergyPerCell = 0;
-	
-	double energyDensityPerCell = -666;
-	double totalEnergyPerRing = 0;
-	
-	double cellVolume = 0;
-	int totalCells = 0;
-        
-	int n;
-	/* 100 is chosen as a number higher than the number of cells found in a normal list */
-	for (n=1; n<100; n++){
-	  
-	  CellIt beginRing = calorimeterCellList.getLowerBound((eflowCaloENUM)i, ringThickness*(n-1));
-
-	  if(beginRing == calorimeterCellList.end()){
-	    break;
-	  }
-        
-	  indexofRing += 1;
-	  std::vector<std::pair<CaloCell*,int> > tempVector = (*beginRing).second;
-	  std::vector<std::pair<CaloCell*,int> >::iterator firstPair = tempVector.begin();
-	  std::vector<std::pair<CaloCell*,int> >::iterator lastPair = tempVector.end();
-	  
-	  int totalCellsinRing = 0;
-	  double energyDensityPerRing = 0;
-	  double averageEnergyDensityPerRing = 0;
-      
-	  for (; firstPair != lastPair; ++firstPair) {
-	    const CaloDetDescrElement* DDE = ((*firstPair).first)->caloDDE();
-	    CaloCell_ID::CaloSample sampling = DDE->getSampling();
-            
-	    msg(MSG::DEBUG)  << " cell eta and phi are " << ((*firstPair).first)->eta() << " and " << ((*firstPair).first)->phi() << " with index " << (*firstPair).second << " and sampling of " << sampling << std::endl;
-	    msg(MSG::DEBUG)  << " cell energy is " << ((*firstPair).first)->energy()<<std::endl;
-            
-	    totalCells += 1;
-	    totalCellsinRing += 1;
-	    
-	    totalEnergyPerRing += ((*firstPair).first)->energy();
-	    totalEnergyPerCell = ((*firstPair).first)->energy();
-	    msg(MSG::DEBUG)  << " Total E per Cell is " << totalEnergyPerCell<<std::endl;
-	    msg(MSG::DEBUG)  << " Total E per Ring is " << totalEnergyPerRing<<std::endl;
-	    
-	    cellVolume = DDE->volume();
-	    msg(MSG::DEBUG)  << " cell volume is " << cellVolume/1000.<<std::endl;
-	    
-	    energyDensityPerCell = totalEnergyPerCell/(cellVolume/1000.);
-	    msg(MSG::DEBUG)  << " E density per Cell is " << energyDensityPerCell<<std::endl;
-	    msg(MSG::DEBUG)  << " Initial added E density per Cell is " << energyDensityPerRing<<std::endl;
-	    energyDensityPerRing += energyDensityPerCell;
-	    msg(MSG::DEBUG)  << " Final added E density per Cell is " << energyDensityPerRing<<std::endl;
-	    averageEnergyDensityPerRing = energyDensityPerRing/((totalCellsinRing)*(efRecTrack->getTrack()->e()/1000.));
-	  }
-	  
-	  msg(MSG::DEBUG)  << " track E is " << efRecTrack->getTrack()->e()/1000.;
-	  msg(MSG::DEBUG)  << " Average E density per Ring is " << averageEnergyDensityPerRing<<std::endl;
-	  
-	  if (averageEnergyDensityPerRing != 0){
-	    avgEdensityToStoreVector.push_back(averageEnergyDensityPerRing);
-	    layerToStore = (eflowCaloENUM)i;
-	    msg(MSG::DEBUG)  <<"layerToStore is "<< layerToStore << std::endl;
-	    layerToStoreVector.push_back(layerToStore);
-	    radiusToStore = (indexofRing)*ringThickness;
-	    msg(MSG::DEBUG)  <<"radiusToStore is "<< radiusToStore << std::endl;
-	    radiusToStoreVector.push_back(radiusToStore);
-	  }
-	  else {msg(MSG::DEBUG)  <<"averageEnergyDensityPerRing = 0"<<std::endl;}
-	}//loop on 100 cells
-      }//loop on calo regions
-	
-      efRecTrack->setLayerCellOrderVector(layerToStoreVector);
-      efRecTrack->setRadiusCellOrderVector(radiusToStoreVector);
-      efRecTrack->setAvgEDensityCellOrderVector(avgEdensityToStoreVector);
-      
-      layerToStoreVector.clear();
-      radiusToStoreVector.clear();
-      avgEdensityToStoreVector.clear();
-    }//loop on track matches    
-  }//loop on eflowCaloObjects
-}
-
-void eflowCellLevelSubtractionTool::performSubtraction() {
-
-  unsigned int nEFCaloObs = m_eflowCaloObjectContainer->size();
-  for (unsigned int iEFCalOb = 0; iEFCalOb < nEFCaloObs; ++iEFCalOb) {
-    eflowCaloObject* thisEflowCaloObject = m_eflowCaloObjectContainer->at(iEFCalOb);
-    
-    unsigned int nClusters = thisEflowCaloObject->nClusters();
-    if (nClusters < 1) {
-      continue;
-    }
-    
-    /* Get matched cluster via Links */
-
-    double expectedEnergy = thisEflowCaloObject->getExpectedEnergy();
-    double clusterEnergy = thisEflowCaloObject->getClusterEnergy();
-    double expectedSigma = sqrt(thisEflowCaloObject->getExpectedVariance());
-    
-    /* Check e/p */
-    if (isEOverPFail(expectedEnergy, expectedSigma, clusterEnergy, m_consistencySigmaCut,
-                     runInGoldenMode())
-        || (runInGoldenMode() && thisEflowCaloObject->nTracks() > 1)) {
-      continue;      
-    }    
-
-    /* Do subtraction */
-
-    int nTrackMatches = thisEflowCaloObject->nTracks();
-    if (nTrackMatches == 0 || runInGoldenMode()) {
-      continue;
-    }
-
-    /* Subtract the track from all matched clusters */
-    const std::vector<eflowTrackClusterLink*>& matchedTrackList = thisEflowCaloObject->efRecLink();
-      
-    for (int iTrack = 0; iTrack < nTrackMatches; ++iTrack) {
-      eflowRecTrack* efRecTrack = matchedTrackList[iTrack]->getTrack();
-      
-      /* Can't subtract without e/p */
-      if (!efRecTrack->hasBin()) {
-	continue;
-      }
-     
-      if (efRecTrack->isInDenseEnvironment()) continue;
-
-      std::vector<eflowRecCluster*> matchedClusters;
-      matchedClusters.clear();
-      std::vector<eflowTrackClusterLink*> links = efRecTrack->getClusterMatches();
-      std::vector<eflowTrackClusterLink*>::iterator itLink = links.begin();
-      std::vector<eflowTrackClusterLink*>::iterator endLink = links.end();
-      for (; itLink != endLink; ++itLink) {
-	matchedClusters.push_back((*itLink)->getCluster());
-      }
-      std::vector<xAOD::CaloCluster*> clusterSubtractionList;
-      std::vector<eflowRecCluster*>::const_iterator itCluster = matchedClusters.begin();
-      std::vector<eflowRecCluster*>::const_iterator endCluster = matchedClusters.end();
-      for (; itCluster != endCluster; ++itCluster) {
-	clusterSubtractionList.push_back((*itCluster)->getClusterForModification(eflowCaloObject::getClusterContainerPtr()));
-      }
-
-      Subtractor::subtractTracksFromClusters(efRecTrack, clusterSubtractionList);
-
-      /* Annihilate the cluster(s) if the remnant is small (i.e. below k*sigma) */
-      if (canAnnihilated(0, expectedSigma, clusterEnergy)) {
-	Subtractor::annihilateClusters(clusterSubtractionList);
-      }
-    }
-    
-    if (canAnnihilated(expectedEnergy, expectedSigma, clusterEnergy)) {
-      /* Check if we can annihilate right away */
-      std::vector<xAOD::CaloCluster*> clusterList;
-      unsigned nCluster = thisEflowCaloObject->nClusters();
-      for (unsigned iCluster = 0; iCluster < nCluster; ++iCluster) {
-        clusterList.push_back(
-            thisEflowCaloObject->efRecCluster(iCluster)->getClusterForModification(
-                eflowCaloObject::getClusterContainerPtr()));
-      }
-      Subtractor::annihilateClusters(clusterList);
-    } 
-
-    /* Flag tracks as subtracted */
-    for (unsigned int iTrack = 0; iTrack < thisEflowCaloObject->nTracks(); ++iTrack) {
-      if (!thisEflowCaloObject->efRecTrack(iTrack)->isInDenseEnvironment()) thisEflowCaloObject->efRecTrack(iTrack)->setSubtracted();
-    }
-  }
-}
-
-StatusCode eflowCellLevelSubtractionTool::finalize(){
-
-  return StatusCode::SUCCESS;
-}
-
-
-bool eflowCellLevelSubtractionTool::isEOverPFail(double expectedEnergy, double sigma, double clusterEnergy, bool consistencySigmaCut, bool useGoldenMode) {
-  if ((expectedEnergy == 0) && (clusterEnergy > 0)) {
-    return false;
-  }
-
-  bool result = useGoldenMode ? fabs(clusterEnergy - expectedEnergy) > consistencySigmaCut*sigma
-                              : clusterEnergy < expectedEnergy - consistencySigmaCut*sigma;
-  return result;
-}
-
-bool eflowCellLevelSubtractionTool::canAnnihilated(double expectedEnergy, double sigma, double clusterEnergy) {
-   return  clusterEnergy - expectedEnergy < m_subtractionSigmaCut * sigma;
-}
-
-std::string eflowCellLevelSubtractionTool::printTrack(const xAOD::TrackParticle* track) {
-  std::stringstream result;
-  result << " track with E, eta and phi "<< track->e() << ", " << track->eta() << " and " << track->phi();
-  return result.str();
-}
-
-std::string eflowCellLevelSubtractionTool::printCluster(const xAOD::CaloCluster* cluster) {
-  std::stringstream result;
-  result << " cluster with E, eta and phi of " << cluster->e() << ", " << cluster->eta() << " and " << cluster->phi();
-  return result.str();
-}
-
-void eflowCellLevelSubtractionTool::printAllClusters(eflowRecClusterContainer* recClusterContainer) {
-    unsigned int nClusters = recClusterContainer->size();
-    for (unsigned int iCluster = 0; iCluster < nClusters; ++iCluster) {
-      /* Create the eflowCaloObject and put it in the container */
-      eflowRecCluster* thisEFRecCluster = recClusterContainer->at(iCluster);
-    if (thisEFRecCluster->getTrackMatches().empty()) {
-      if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Isolated" << printCluster(thisEFRecCluster->getCluster()) << endmsg;
-    } else {
-      if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Matched" << printCluster(thisEFRecCluster->getCluster()) << endmsg;
-      int nTrackMatches = thisEFRecCluster->getNTracks();
-      std::vector<eflowTrackClusterLink*> theTrackLinks = thisEFRecCluster->getTrackMatches();
-      for (int iTrackMatch = 0; iTrackMatch < nTrackMatches; ++iTrackMatch) {
-        if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Matched" << printTrack(theTrackLinks[iTrackMatch]->getTrack()->getTrack()) << endmsg;
-      }
-    }
-  }
-}
diff --git a/Reconstruction/eflowRec/src/eflowClusterCollectionTool.cxx b/Reconstruction/eflowRec/src/eflowClusterCollectionTool.cxx
deleted file mode 100644
index 74ab175e8b2..00000000000
--- a/Reconstruction/eflowRec/src/eflowClusterCollectionTool.cxx
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#include "eflowRec/eflowClusterCollectionTool.h"
-#include "eflowRec/eflowCaloObject.h"
-#include "eflowRec/eflowRecCluster.h"
-
-eflowClusterCollectionTool::eflowClusterCollectionTool(const std::string& type,const std::string& name,const IInterface* parent) :
-  AthAlgTool( type, name, parent)
-{
-  declareInterface<IEFlowClusterCollectionTool>(this);
-}
-
-StatusCode eflowClusterCollectionTool::initialize(){
-  return StatusCode::SUCCESS;
-}
-
-std::unique_ptr<eflowRecClusterContainer> eflowClusterCollectionTool::retrieve(eflowCaloObjectContainer* theEflowCaloObjectContainer, bool useNonModifiedClusters) {
-
-  std::unique_ptr<eflowRecClusterContainer> result =  std::make_unique<eflowRecClusterContainer>();
-
-  /* Loop over all eflowCaloObjects */
-  eflowCaloObjectContainer::iterator itEFCaloObject = theEflowCaloObjectContainer->begin();
-  eflowCaloObjectContainer::iterator endEFCaloObject = theEflowCaloObjectContainer->end();
-  for (; itEFCaloObject != endEFCaloObject; ++itEFCaloObject) {
-
-    eflowCaloObject* thisEflowCaloObject = *itEFCaloObject;
-
-    /* Add all clusters on the eflowCaloObject to the container */
-    unsigned int nClusters = thisEflowCaloObject->nClusters();
-    for (unsigned int iCluster = 0; iCluster < nClusters; ++iCluster) {
-      eflowRecCluster* thisEfRecCluster = thisEflowCaloObject->efRecCluster(iCluster);
-
-      /* Only add clusters if should run calibration tools or if touchable (i.e. we modified them */
-      if (!useNonModifiedClusters && !thisEfRecCluster->isTouchable()  ) {
-        continue;
-      }
-
-      result->push_back(thisEfRecCluster);
-  }
-}
-  return result;
-}
-
-
-std::unique_ptr<xAOD::CaloClusterContainer> eflowClusterCollectionTool::execute(eflowCaloObjectContainer* theEflowCaloObjectContainer, bool useNonModifiedClusters) {
-
-  std::unique_ptr<xAOD::CaloClusterContainer> result = std::make_unique<xAOD::CaloClusterContainer>(SG::VIEW_ELEMENTS);
-
-  /* Loop over all eflowCaloObjects */
-  eflowCaloObjectContainer::iterator itEFCaloObject = theEflowCaloObjectContainer->begin();
-  eflowCaloObjectContainer::iterator endEFCaloObject = theEflowCaloObjectContainer->end();
-  for (; itEFCaloObject != endEFCaloObject; ++itEFCaloObject) {
-
-    eflowCaloObject* thisEflowCaloObject = *itEFCaloObject;
-
-    /* Add all clusters on the eflowCaloObject to the container */
-    unsigned int nClusters = thisEflowCaloObject->nClusters();
-    for (unsigned int iCluster = 0; iCluster < nClusters; ++iCluster) {
-      eflowRecCluster* thisEfRecCluster = thisEflowCaloObject->efRecCluster(iCluster);
-
-      /* Only add clusters if should run calibration tools or if touchable (i.e. we modified them */
-      if (!useNonModifiedClusters && !thisEfRecCluster->isTouchable()  ) {
-        continue;
-      }
-
-      xAOD::CaloCluster* thisCluster = thisEfRecCluster->getClusterForModification(eflowCaloObject::getClusterContainerPtr());
-      result->push_back(thisCluster);
-
-      msg(MSG::DEBUG) << "Adding cluster with E, eta and phi to moments maker "
-          << thisCluster->e() << ", " << thisCluster->eta() << " and " << thisCluster->phi() << endmsg;
-    }
-  }
-  return result;
-}
-
-StatusCode eflowClusterCollectionTool::finalize(){
-  return StatusCode::SUCCESS;
-}
diff --git a/Reconstruction/eflowRec/src/eflowLCCalibTool.cxx b/Reconstruction/eflowRec/src/eflowLCCalibTool.cxx
deleted file mode 100644
index bbdeeb7ff0d..00000000000
--- a/Reconstruction/eflowRec/src/eflowLCCalibTool.cxx
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#include "eflowRec/eflowLCCalibTool.h"
-#include "eflowRec/eflowCaloObject.h"
-#include "eflowRec/eflowRecCluster.h"
-
-#include "xAODCaloEvent/CaloCluster.h"
-#include "xAODCaloEvent/CaloClusterContainer.h"
-#include "xAODCaloEvent/CaloClusterKineHelper.h"
-#include "CaloRec/CaloClusterProcessor.h"
-
-#include "CaloDetDescr/CaloDetDescrManager.h"
-#include "CaloIdentifier/CaloCell_ID.h"
-#include "CaloUtils/CaloClusterStoreHelper.h"
-
-eflowLCCalibTool::eflowLCCalibTool(const std::string& type, const std::string& name, const IInterface* parent) :
-  AthAlgTool(type, name, parent),
-  m_clusterCollectionTool("eflowRecClusterCollectionTool", this),
-  m_clusterLocalCalibTool("CaloClusterLocalCalib", this),
-  m_clusterLocalCalibOOCCTool("CaloClusterLocalCalib", this),
-  m_clusterLocalCalibOOCCPi0Tool("CaloClusterLocalCalib", this),
-  m_clusterLocalCalibDMTool("CaloClusterLocalCalib", this),
-  m_useLocalWeight(false) {
-  declareInterface<eflowLCCalibTool>(this);
-  declareProperty("eflowRecClusterCollectionTool", m_clusterCollectionTool,       "Tool to choose clusters to use");
-  declareProperty("CaloClusterLocalCalib",        m_clusterLocalCalibTool,        "Cluster Calibration for EFlowRec");
-  declareProperty("CaloClusterLocalCalibOOCC",    m_clusterLocalCalibOOCCTool,    "Cluster CalibrationOOCC for EFlowRec");
-  declareProperty("CaloClusterLocalCalibOOCCPi0", m_clusterLocalCalibOOCCPi0Tool, "Cluster CalibrationOOCCPi0 for EFlowRec");
-  declareProperty("CaloClusterLocalCalibDM",      m_clusterLocalCalibDMTool,      "Cluster CalibrationDM for EFlowRec");
-  declareProperty("UseLocalWeight",               m_useLocalWeight,               "Use weight before subtraction");
-}
-
-StatusCode eflowLCCalibTool::initialize() {
-
-  /* Retrieve the cluster collection tool */
-  ATH_CHECK(m_clusterCollectionTool.retrieve());
-
-  /* Retrieve basic local-hadron calibration tool */
-  ATH_CHECK(m_clusterLocalCalibTool.retrieve());
-
-  /* Retrieve tools for out-of-cluster corrections */
-  ATH_CHECK(m_clusterLocalCalibOOCCTool.retrieve());
-
-  ATH_CHECK(m_clusterLocalCalibOOCCPi0Tool.retrieve());
-
-  /* Retrieve tool for DM corrections */
-  ATH_CHECK(m_clusterLocalCalibDMTool.retrieve());
-
-  return StatusCode::SUCCESS;
-
-}
-
-void eflowLCCalibTool::execute(eflowCaloObjectContainer* theEflowCaloObjectContainer) {
-
-  if (m_useLocalWeight) {
-    std::unique_ptr<eflowRecClusterContainer> theEFRecCluster = m_clusterCollectionTool->retrieve(theEflowCaloObjectContainer, true);
-    /* Calibrate each cluster */
-    eflowRecClusterContainer::iterator itCluster = theEFRecCluster->begin();
-    eflowRecClusterContainer::iterator endCluster = theEFRecCluster->end();
-    for (; itCluster != endCluster; ++itCluster) {
-      eflowRecCluster* cluster = (*itCluster);
-      applyLocalWeight(cluster);
-    }
-  } else {
-    /* Collect all the clusters in a temporary container (with VIEW_ELEMENTS!) */
-    std::unique_ptr<xAOD::CaloClusterContainer> tempClusterContainer = m_clusterCollectionTool->execute(
-        theEflowCaloObjectContainer, true);
-
-    /* Calibrate each cluster */
-    xAOD::CaloClusterContainer::iterator itCluster = tempClusterContainer->begin();
-    xAOD::CaloClusterContainer::iterator endCluster = tempClusterContainer->end();
-    for (; itCluster != endCluster; ++itCluster) {
-      xAOD::CaloCluster* cluster = (*itCluster);
-      /* Subsequently apply all ClusterLocalCalibTools, print debug output at each stage, if DEBUG it set */
-
-      apply(m_clusterLocalCalibTool, cluster);
-
-      apply(m_clusterLocalCalibOOCCTool, cluster);
-
-      apply(m_clusterLocalCalibOOCCPi0Tool, cluster);
-
-      apply(m_clusterLocalCalibDMTool, cluster);
-
-    }
-
-  }
-}
-
-StatusCode eflowLCCalibTool::finalize() {
-  return StatusCode::SUCCESS;
-}
-
-
-void eflowLCCalibTool::apply(ToolHandle<CaloClusterCollectionProcessor>& calibTool, xAOD::CaloCluster* cluster) {
-
-  assert(!m_useLocalWeight);
-  CaloClusterCollectionProcessor* myCollectionProcessor = &(*calibTool);
-  CaloClusterProcessor* myCalibProcessor = dynamic_cast<CaloClusterProcessor*>(myCollectionProcessor);
-  if (myCalibProcessor) {
-    if (myCalibProcessor->execute(cluster).isFailure()) {
-      if (msgLvl(MSG::WARNING))
-        msg(MSG::WARNING) << "Could not execute " << calibTool.name() << endmsg;
-    }
-  } else if (msgLvl(MSG::WARNING))
-    msg(MSG::WARNING) << " dynamic_cast provided NULL pointer to CaloClusterProcessor " << endmsg;
-}
-
-void eflowLCCalibTool::applyLocalWeight(eflowRecCluster* theEFRecClusters) {
-  xAOD::CaloCluster* theCluster = theEFRecClusters->getClusterForModification(
-      eflowCaloObject::getClusterContainerPtr());
-
-  /* Iterate over cells of old cluster and replicate them with energy weighted by -1 if negative and add it to the new cluster */
-  const std::map<IdentifierHash, double> weightMap = theEFRecClusters->getCellsWeight();
-  const CaloCell_ID* calo_id = CaloDetDescrManager::instance()->getCaloCell_ID();
-  xAOD::CaloCluster::cell_iterator cellIter = theCluster->cell_begin();
-
-  for (int cellIndex = 0; cellIter != theCluster->cell_end(); cellIter++) {
-    const CaloCell* pCell = *cellIter;
-    IdentifierHash myHashId = calo_id->calo_cell_hash(pCell->ID());
-    double weight = weightMap.find(myHashId)->second;
-    theCluster->reweightCell(cellIter, weight);
-    cellIndex++;
-  }
-
-  CaloClusterKineHelper::calculateKine(theCluster, true, false);
-
-  theCluster->recoStatus().setStatus(CaloRecoStatus::CALIBRATEDLHC);
-
-}
diff --git a/Reconstruction/eflowRec/src/eflowMomentCalculatorTool.cxx b/Reconstruction/eflowRec/src/eflowMomentCalculatorTool.cxx
deleted file mode 100644
index 08797cd5504..00000000000
--- a/Reconstruction/eflowRec/src/eflowMomentCalculatorTool.cxx
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#include "eflowRec/eflowMomentCalculatorTool.h"
-#include "eflowRec/eflowCaloObject.h"
-#include "eflowRec/eflowRecCluster.h"
-
-#include "xAODCaloEvent/CaloClusterKineHelper.h"
-
-eflowMomentCalculatorTool::eflowMomentCalculatorTool(const std::string& type,const std::string& name,const IInterface* parent) :
-  AthAlgTool( type, name, parent),
-  m_clusterCollectionTool("eflowRecClusterCollectionTool",this),
-  m_clusterMomentsMaker("CaloClusterMomentsMaker",this),
-  m_LCMode(false)
-{
-  declareInterface<eflowMomentCalculatorTool>(this);
-  declareProperty("eflowRecClusterCollectionTool",  m_clusterCollectionTool, "Tool to choose clusters to use");
-  declareProperty("CaloClusterMomentsMaker",      m_clusterMomentsMaker,          "Tool to Calculate Cluster Moments");
-  declareProperty("LCMode", m_LCMode, "Toggle whether we are in LC mode or not");
-}
-
-StatusCode eflowMomentCalculatorTool::initialize(){
-
-  /* Retrieve the cluster collection tool */
-  ATH_CHECK(m_clusterCollectionTool.retrieve());
-
-  /* Retrieve the cluster moments maker */
-  if ( m_clusterMomentsMaker.retrieve().isFailure() ) {
-    msg(MSG::WARNING) << "Cannot find CaloClusterMomentsMaker Tool "<< endmsg;
-    return StatusCode::SUCCESS;
-  }
-  return StatusCode::SUCCESS;
-}
-
-void eflowMomentCalculatorTool::execute(eflowCaloObjectContainer* theEflowCaloObjectContainer) {
-
-  /* Collect all the clusters in a temporary container (with VIEW_ELEMENTS!) */
-  bool useNonModifiedClusters = true;
-  if (true == m_LCMode) useNonModifiedClusters = false;
-  std::unique_ptr<xAOD::CaloClusterContainer> tempClusterContainer = m_clusterCollectionTool->execute(theEflowCaloObjectContainer, useNonModifiedClusters);
-
-  /* Set the layer energies */
-  /* This must be set before the cluster moment calculations, which use the layer energies */
-  for (auto cluster : *tempClusterContainer) CaloClusterKineHelper::calculateKine(cluster, true, true);
-
-  /* Remake the cluster moments */
-
-  if (m_clusterMomentsMaker->execute(tempClusterContainer.get()).isFailure()) {
-    msg(MSG::WARNING) << "Could not execute ClusterMomentsMaker " << endmsg;
-  }
-
-}
-
-StatusCode eflowMomentCalculatorTool::finalize(){ return StatusCode::SUCCESS; }
-
-
diff --git a/Reconstruction/eflowRec/src/eflowObjectBuilder.cxx b/Reconstruction/eflowRec/src/eflowObjectBuilder.cxx
deleted file mode 100644
index 422856e57d6..00000000000
--- a/Reconstruction/eflowRec/src/eflowObjectBuilder.cxx
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/*
- * eflowObjectBuilder.cxx
- *
- *  Created on: Mar 2, 2015
- *      Author: zhangrui
- */
-
-#include "eflowRec/eflowObjectBuilder.h"
-#include "eflowRec/eflowCaloObject.h"
-#include "eflowRec/eflowTrackClusterLink.h"
-#include "eflowRec/eflowBaseAlgTool.h"
-#include "eflowRec/eflowLCCalibTool.h"
-#include "eflowRec/eflowObjectCreatorTool.h"
-
-#include "FourMomUtils/P4DescendingSorters.h"
-
-#include "StoreGate/StoreGateSvc.h"
-
-#include "GaudiKernel/ListItem.h"
-
-#include <iostream>
-using namespace std;
-
-
-eflowObjectBuilder::eflowObjectBuilder(const std::string& name,  ISvcLocator* pSvcLocator):
-  AthAlgorithm(name, pSvcLocator),
-  m_eflowClustersOutputName("PFOClusters_JetETMiss"),
-  m_eflowCaloObjectsName("eflowCaloObjects01"),
-  m_storeGate(nullptr),
-  m_tools(this)
-{
-  /* The following properties can be specified at run-time (declared in jobOptions file) */
-  /* Tool configuration */
-  declareProperty( "PrivateToolList",  m_tools, "List of Private AlgTools" );
-  /* Name if eflow cluster container to be created */
-  declareProperty("EflowClustersOutputName",m_eflowClustersOutputName);
-  /* Name of eflow Calo Object to be retrieved */
-  declareProperty("EflowCaloObjectsName",m_eflowCaloObjectsName);
-}
-
-eflowObjectBuilder::~eflowObjectBuilder() { }
-
-StatusCode eflowObjectBuilder::initialize() {
-
-  ATH_MSG_DEBUG("Initialising eflowObjectBuilder ");
-
-  if (service("StoreGateSvc", m_storeGate).isFailure()) {
-    ATH_MSG_WARNING("Unable to retrieve pointer to StoreGateSvc");
-    return StatusCode::SUCCESS;
-  }
-
-  /* Tool service */
-  IToolSvc* myToolSvc;
-  if ( service("ToolSvc",myToolSvc).isFailure() ) {
-    ATH_MSG_WARNING(" Tool Service Not Found");
-    return StatusCode::SUCCESS;
-  }
-
-  if ( m_tools.retrieve().isFailure() ) {
-    ATH_MSG_WARNING("Failed to retrieve " << m_tools);
-    return StatusCode::SUCCESS;
-  } else {
-    ATH_MSG_VERBOSE("Retrieved " << m_tools);
-  }
-
-  // print the list of tools - taken from JetRec/JetAlgorithm.cxx
-  printTools();
-
-  return StatusCode::SUCCESS;
-}
-
-StatusCode eflowObjectBuilder::execute(){
-
-  msg(MSG::DEBUG) << "Executing eflowObjectBuilder" << endmsg;
-  StatusCode sc;
-
-  /* Retrieve the eflowCaloObject container, return if not existing */
-  const eflowCaloObjectContainer* caloObjectContainer;
-  sc = m_storeGate->retrieve(caloObjectContainer,m_eflowCaloObjectsName);
-  if(sc.isFailure() || !caloObjectContainer ){
-    msg(MSG::WARNING) <<" no eflow calo object container" <<endmsg;
-    return StatusCode::SUCCESS;
-  }
-
-  xAOD::CaloClusterContainer* newCaloClusterContainer = eflowCaloObject::getClusterContainerPtr();
-  CHECK( evtStore()->record( newCaloClusterContainer, m_eflowClustersOutputName ) );
-
-  xAOD::CaloClusterAuxContainer* newCaloClusterAuxContainer = eflowCaloObject::getClusterAuxContainerPtr();
-  CHECK( evtStore()->record( newCaloClusterAuxContainer, m_eflowClustersOutputName + "Aux." ) );
-
-  /* Run the AlgTools
-   * --> MomentCalculator, LCCalibTool, ObjectCreatorTool */
-  ToolHandleArray< eflowBaseAlgTool >::iterator itAlgTool = m_tools.begin();
-  ToolHandleArray< eflowBaseAlgTool >::iterator lastAlgTool  = m_tools.end();
-  for (; itAlgTool != lastAlgTool; ++itAlgTool) {
-    (*itAlgTool)->execute(const_cast<eflowCaloObjectContainer*>(caloObjectContainer));
-  }
-
-  return StatusCode::SUCCESS;
-
-}
-
-StatusCode eflowObjectBuilder::finalize() { return StatusCode::SUCCESS; }
-
-void eflowObjectBuilder::printTools() {
-  // print the list of tools - taken from JetRec/JetAlgorithm.cxx
-  ATH_MSG_VERBOSE(" ");
-  ATH_MSG_VERBOSE("List of tools in execution sequence of eflowObjectBuilder:");
-  ATH_MSG_VERBOSE("------------------------------------");
-  ATH_MSG_VERBOSE(" ");
-  ToolHandleArray<eflowBaseAlgTool>::iterator itTool = m_tools.begin();
-  ToolHandleArray<eflowBaseAlgTool>::iterator lastTool = m_tools.end();
-  unsigned int toolCtr = 0;
-  for (; itTool != lastTool; itTool++) {
-    toolCtr++;
-    ATH_MSG_VERBOSE(std::setw(2) << std::setiosflags(std::ios_base::right) << toolCtr << ".) "
-    << std::resetiosflags(std::ios_base::right) << std::setw(36) << std::setfill('.')
-    << std::setiosflags(std::ios_base::left) << (*itTool)->type() << std::setfill('.')
-		    << (*itTool)->name() << std::setfill(' '));
-  }
-  ATH_MSG_VERBOSE(" ");
-  ATH_MSG_VERBOSE("------------------------------------");
-}
diff --git a/Reconstruction/eflowRec/src/eflowObjectCreatorTool.cxx b/Reconstruction/eflowRec/src/eflowObjectCreatorTool.cxx
deleted file mode 100644
index 87ca935ae79..00000000000
--- a/Reconstruction/eflowRec/src/eflowObjectCreatorTool.cxx
+++ /dev/null
@@ -1,501 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/********************************************************************
-
-NAME:     eflowObjectCreatorTool.h
-PACKAGE:  offline/Reconstruction/eflowRec
-
-AUTHORS:  M.Hodgkinson (based on eflowObjectBuilder class written by D.Tovey)
-CREATED:  15th August, 2005
-
-********************************************************************/
-
-#include "eflowRec/eflowObjectCreatorTool.h"
-#include "eflowRec/eflowRecTrack.h"
-#include "eflowRec/eflowRecCluster.h"
-#include "eflowRec/eflowTrackClusterLink.h"
-#include "eflowRec/eflowCaloObject.h"
-
-#include "FourMomUtils/P4DescendingSorters.h"
-#include "xAODPFlow/PFO.h"
-#include "xAODPFlow/PFOContainer.h"
-#include "xAODPFlow/PFOAuxContainer.h"
-#include "xAODPFlow/versions/PFOAttributesAccessor_v1.h"
-
-#include <vector>
-#include <iostream>
-using namespace std;
-
-namespace EFlow_Fn{ 
-  // comparison,  order by Et
-
-  class gtpt_eflow{
-  public:
-    inline gtpt_eflow() {};
-    inline bool operator () (const xAOD::PFO& pf1, const xAOD::PFO& pf2){
-      return (pf1.e()/cosh(pf1.eta())) > (pf2.e()/cosh(pf2.eta()));
-    }
-  };
-
-}
-
-eflowObjectCreatorTool::eflowObjectCreatorTool(const std::string& type, const std::string& name, const IInterface* parent) :
-    AthAlgTool(type, name, parent),
-    m_PFOOutputName("JetETMiss"),
-    m_chargedPFOContainer(nullptr),
-    m_neutralPFOContainer(nullptr),
-    m_neutralPFOContainer_nonModified(nullptr),
-    m_eOverPMode(false),
-    m_goldenModeString(""),
-    m_LCMode(false),
-    m_trackVertexAssociationTool(""),
-    m_vertexContainerName("PrimaryVertices"),
-    m_useAODReductionMomentList(false)
-{
-  declareInterface<eflowObjectCreatorTool>(this);
-  /* Name of  eflow Container to be created */
-  declareProperty("PFOOutputName",m_PFOOutputName);
-  declareProperty("EOverPMode", m_eOverPMode);
-  declareProperty("goldenModeString",m_goldenModeString,"run in golden match mode only?");
-  declareProperty("LCMode", m_LCMode, "Whether we are in LC or EM mode");
-  declareProperty("TrackVertexAssociationTool", m_trackVertexAssociationTool);
-  declareProperty("UseAODReductionMomentList",m_useAODReductionMomentList);
-}
-
-StatusCode eflowObjectCreatorTool::initialize(){
-
-  /* tool service */
-  IToolSvc* myToolSvc;
-  if ( service("ToolSvc",myToolSvc).isFailure() ) {
-    msg(MSG::WARNING) << " Tool Service Not Found" << endmsg;
-    return StatusCode::SUCCESS;
-  }
-
-  if(! m_trackVertexAssociationTool.empty() ) {
-     ATH_MSG_VERBOSE("Intialized using ITrackVertexAssociationTool");
-     return m_trackVertexAssociationTool.retrieve();
-  }
-
-  return StatusCode::SUCCESS;
-}
-
-StatusCode eflowObjectCreatorTool::execute(eflowCaloObject *energyFlowCaloObject){
-
-  msg(MSG::DEBUG) << "Executing eflowObjectCreatorTool " << endmsg;
-
-  if (m_eOverPMode){
-    /* Loop over charged efos (in practice nClusters currently is either 0 or 1) */
-    createChargedEflowObjects(energyFlowCaloObject, true);
-    createNeutralEflowObjects(energyFlowCaloObject);
-  } else {
-    createChargedEflowObjects(energyFlowCaloObject);
-    createNeutralEflowObjects(energyFlowCaloObject);
-  }
-
-  const xAOD::VertexContainer* vertexContainer = nullptr;
-  StatusCode vertexRetrieved =  evtStore()->retrieve(vertexContainer,m_vertexContainerName);
-  if ( vertexRetrieved.isFailure() || vertexContainer==nullptr) {
-    ATH_MSG_WARNING("Could not retrieve the VertexContainer from evtStore: " << m_vertexContainerName);
-  }
-  else{
-    addVertexLinksToChargedEflowObjects(vertexContainer);
-  }
-  
-  return StatusCode::SUCCESS;
-
-}
-
-void eflowObjectCreatorTool::execute(eflowCaloObjectContainer* theEflowCaloObjectContainer) {
-  msg(MSG::DEBUG) << "Running eflowObjectCreatorTool on the eflowCaloObjectContainer " << endmsg;
-
-  /* Create PFO containers and register them */
-  if( setupPFOContainers().isFailure() ){
-    msg(MSG::WARNING) << "Couldn't setup PFO containers. " << endmsg;
-    return;
-  }
-
-  /* Create PFOs from all eflowCaloObjects */
-  unsigned int nEFCaloObs = theEflowCaloObjectContainer->size();
-  for (unsigned int iEFCalOb = 0; iEFCalOb < nEFCaloObs; ++iEFCalOb){
-    eflowCaloObject* thisEflowCaloObject = theEflowCaloObjectContainer->at(iEFCalOb);
-    if (execute(thisEflowCaloObject).isFailure()){
-      msg(MSG::WARNING) << "Execute failed for one eflowCaloObject. " << endmsg;
-      continue;
-    }
-  }
-
-  /* Sort clusters and efos by pt TODO: this should be done in eflowObjectCreatorTool */
-  //Do we need to sort the objects at all?
-  //std::sort(theEflowObjectContainer->begin(),theEflowObjectContainer->end(),EFlow_Fn::gtpt_PFO());
-}
-
-StatusCode eflowObjectCreatorTool::finalize(){ return StatusCode::SUCCESS; }
-
-StatusCode eflowObjectCreatorTool::setupPFOContainers() {
-  m_chargedPFOContainer = new xAOD::PFOContainer();
-  
-  xAOD::PFOAuxContainer* chargedPFOAuxContainer = new xAOD::PFOAuxContainer();
-  
-  if (evtStore()->contains<xAOD::PFOContainer>(m_PFOOutputName + "ChargedParticleFlowObjects")){
-    CHECK( evtStore()->overwrite( m_chargedPFOContainer, m_PFOOutputName + "ChargedParticleFlowObjects"  ) );
-    CHECK( evtStore()->overwrite( chargedPFOAuxContainer, m_PFOOutputName + "ChargedParticleFlowObjectsAux." ) );
-  }
-  else{
-    CHECK( evtStore()->record( m_chargedPFOContainer, m_PFOOutputName + "ChargedParticleFlowObjects"  ) );
-    CHECK( evtStore()->record( chargedPFOAuxContainer, m_PFOOutputName + "ChargedParticleFlowObjectsAux." ) );
-  }
-  m_chargedPFOContainer->setStore(chargedPFOAuxContainer);
-  
-  m_neutralPFOContainer = new xAOD::PFOContainer();
-  xAOD::PFOAuxContainer* neutralPFOAuxContainer = new xAOD::PFOAuxContainer();
-  
-  if (evtStore()->contains<xAOD::PFOContainer>(m_PFOOutputName + "NeutralParticleFlowObjects")){
-    CHECK( evtStore()->overwrite( m_neutralPFOContainer, m_PFOOutputName + "NeutralParticleFlowObjects"  ) );
-    CHECK( evtStore()->overwrite( neutralPFOAuxContainer, m_PFOOutputName + "NeutralParticleFlowObjectsAux." ) );
-  }
-  else{
-    CHECK( evtStore()->record( m_neutralPFOContainer,  m_PFOOutputName + "NeutralParticleFlowObjects"  ) );
-    CHECK( evtStore()->record( neutralPFOAuxContainer,  m_PFOOutputName + "NeutralParticleFlowObjectsAux." ) );
-  }
-  m_neutralPFOContainer->setStore(neutralPFOAuxContainer);
-  
-  if (true == m_LCMode){
-    m_neutralPFOContainer_nonModified = new xAOD::PFOContainer();
-    xAOD::PFOAuxContainer* neutralPFOAuxContainer_nonModified = new xAOD::PFOAuxContainer();
-    if (evtStore()->contains<xAOD::PFOContainer>(m_PFOOutputName + "NonModifiedNeutralParticleFlowObjects"  )){
-      CHECK( evtStore()->overwrite( m_neutralPFOContainer_nonModified, m_PFOOutputName + "NonModifiedNeutralPFO"   ) );
-      CHECK( evtStore()->overwrite( neutralPFOAuxContainer_nonModified, m_PFOOutputName + "NonModifiedNeutralParticleFlowObjectsAux." ) );
-    }
-    else{
-      CHECK( evtStore()->record( m_neutralPFOContainer_nonModified, m_PFOOutputName + "NonModifiedNeutralParticleFlowObjects"  ) );
-      CHECK( evtStore()->record( neutralPFOAuxContainer_nonModified, m_PFOOutputName + "NonModifiedNeutralParticleFlowObjectsAux." ) );
-    }
-    m_neutralPFOContainer_nonModified->setStore(neutralPFOAuxContainer_nonModified);
-  }
-  return StatusCode::SUCCESS;
-}
-
-void eflowObjectCreatorTool::addVertexLinksToChargedEflowObjects(const xAOD::VertexContainer* theVertexContainer){
-
-  if (theVertexContainer){
-    //This is a loop on all xAOD::PFO with non-zero charge
-    for (auto theChargedPFO : *m_chargedPFOContainer){
-      const xAOD::TrackParticle* theTrack = theChargedPFO->track(0);
-      if (theTrack){
-	ElementLink< xAOD::VertexContainer> theVertexLink = m_trackVertexAssociationTool->getUniqueMatchVertexLink(*theTrack,*theVertexContainer);
-  	bool haveSetLink = theChargedPFO->setVertexLink(theVertexLink);
-	if (!haveSetLink) msg(MSG::WARNING) << " Could not set vertex link on charged PFO " << endmsg;
-      }//if valid pointer to xAOD::TrackParticle
-    }
-  }
-
-}
-
-void eflowObjectCreatorTool::createChargedEflowObjects(eflowCaloObject* energyFlowCaloObject, bool addClusters){
- 
-  /* Loop over all tracks in the eflowCaloObject */
-  int nTracks = energyFlowCaloObject->nTracks();
-  for (int iTrack = 0; iTrack < nTracks; ++iTrack) {
-
-    eflowRecTrack* efRecTrack = energyFlowCaloObject->efRecTrack(iTrack);
-
-    /* Skip tracks that haven't been subtracted */
-    if (false == m_eOverPMode){
-      if (!efRecTrack->isSubtracted()){ continue; }
-    }
-    
-    /* Create new xAOD::PFO */
-    xAOD::PFO* myEflowObject = new xAOD::PFO();
-    m_chargedPFOContainer->push_back(myEflowObject);
-
-    /* Get the track elementLink and add it to the xAOD:PFO  */
-    ElementLink<xAOD::TrackParticleContainer> theTrackLink = efRecTrack->getTrackElemLink();
-    bool isSet = myEflowObject->setTrackLink(theTrackLink);
-    if (!isSet) { msg(MSG::WARNING) << "Could not set Track B in PFO " << endmsg; }
-    myEflowObject->setCharge(efRecTrack->getTrack()->charge());
-
-    std::pair<double,double> etaPhi(0.0,0.0);
-
-    if (m_eOverPMode){
-      /* In EOverPMode want charged eflowObjects to have extrapolated eta,phi as coordinates
-       * (needed for analysis of EOverP Data) */
-      etaPhi = efRecTrack->getTrackCaloPoints().getEM2etaPhi();
-        
-      /*add information to xAOD*/
-      xAOD::PFODetails::PFOAttributes myAttribute_layerHED = xAOD::PFODetails::PFOAttributes::eflowRec_layerHED;
-      myEflowObject->setAttribute<int>(myAttribute_layerHED,efRecTrack->getLayerHED() );
-      
-      xAOD::PFODetails::PFOAttributes myAttribute_layerVectorCellOrdering = xAOD::PFODetails::PFOAttributes::eflowRec_layerVectorCellOrdering;
-      myEflowObject->setAttribute<std::vector<int> >(myAttribute_layerVectorCellOrdering,efRecTrack->getLayerCellOrderVector() );
-      
-      xAOD::PFODetails::PFOAttributes myAttribute_radiusVectorCellOrdering = xAOD::PFODetails::PFOAttributes::eflowRec_radiusVectorCellOrdering;
-      myEflowObject->setAttribute<std::vector<float> >(myAttribute_radiusVectorCellOrdering,efRecTrack->getRadiusCellOrderVector() );
-        
-      xAOD::PFODetails::PFOAttributes myAttribute_avgEdensityVectorCellOrdering = xAOD::PFODetails::PFOAttributes::eflowRec_avgEdensityVectorCellOrdering;
-      myEflowObject->setAttribute<std::vector<float> >(myAttribute_avgEdensityVectorCellOrdering,efRecTrack->getAvgEDensityCellOrderVector() );              
-    } else {
-      /* In normal mode we want te track eta,phi at the perigee */
-      etaPhi.first = efRecTrack->getTrack()->eta();
-      etaPhi.second = efRecTrack->getTrack()->phi();
-    }
-    /* Set the 4-vector of the xAOD::PFO */
-    myEflowObject->setP4(efRecTrack->getTrack()->pt(), etaPhi.first, etaPhi.second, efRecTrack->getTrack()->m());
-
-    ATH_MSG_DEBUG("Created charged PFO with E, pt, eta and phi of " << myEflowObject->e() << ", " << myEflowObject->pt() << ", " << myEflowObject->eta() << " and " << myEflowObject->phi());
-    
-    /* Add the amount of energy the track was expected to deposit in the calorimeter - this is needed to calculate the charged weight in the jet finding */
-    xAOD::PFODetails::PFOAttributes myAttribute_tracksExpectedEnergyDeposit = xAOD::PFODetails::PFOAttributes::eflowRec_tracksExpectedEnergyDeposit;
-    myEflowObject->setAttribute<float>(myAttribute_tracksExpectedEnergyDeposit,efRecTrack->getEExpect() );
-    
-    /* Flag if this track was in a dense environment for later checking */
-    xAOD::PFODetails::PFOAttributes myAttribute_isInDenseEnvironment = xAOD::PFODetails::PFOAttributes::eflowRec_isInDenseEnvironment;
-    //There is some issue using bools - when written to disk they convert to chars. So lets store the bool as an int.
-    myEflowObject->setAttribute<int>(myAttribute_isInDenseEnvironment, (efRecTrack->isInDenseEnvironment()));
-
-    /* Optionally we add the links to clusters to the xAOD::PFO */
-    if (true == addClusters){
-       unsigned int nClusters = energyFlowCaloObject->nClusters();
-       for (unsigned int iCluster = 0; iCluster < nClusters; ++iCluster){
-	 eflowRecCluster* thisEfRecCluster = energyFlowCaloObject->efRecCluster(iCluster);
-	 ElementLink<xAOD::CaloClusterContainer> theClusLink = thisEfRecCluster->getClusElementLink();
-	 bool isSet = myEflowObject->addClusterLink(theClusLink);
-	 if (!isSet) msg(MSG::WARNING) << "Could not set Cluster in PFO " << endmsg;
-       }//cluster loop
-    }//addClusters is set to true - so we added the clusters to the xAOD::PFO   
-
-  }//loop over the tracks on the 
-
-}
-
-void eflowObjectCreatorTool::createNeutralEflowObjects(eflowCaloObject* energyFlowCaloObject) {
-  unsigned int nClusters = energyFlowCaloObject->nClusters();
-  for (unsigned int iCluster = 0; iCluster < nClusters; ++iCluster){
-    eflowRecCluster* thisEfRecCluster = energyFlowCaloObject->efRecCluster(iCluster);
-
-    /* Skip empty clusters (presumably subtraction remnants) */
-    const CaloClusterCellLink* theCellLink = energyFlowCaloObject->efRecCluster(iCluster)->getCluster()->getCellLinks();
-    CaloClusterCellLink::const_iterator it=theCellLink->begin();
-    CaloClusterCellLink::const_iterator it_e=theCellLink->end();
-    if (it == it_e) {
-      continue;
-    }
-    //this vetoes rare examples where only two cells are left, and they have equal and opposite energy
-    if (0.0 == energyFlowCaloObject->efRecCluster(iCluster)->getCluster()->e() ) continue;
-
-    /* Create the efo, add the cluster and set the four-momentum, charge and type */
-
-    xAOD::PFO* thisEflowObject = new xAOD::PFO();
-    if (m_LCMode) {
-      if (thisEfRecCluster->isTouchable()) {
-        m_neutralPFOContainer->push_back(thisEflowObject);
-      } else {
-       m_neutralPFOContainer_nonModified->push_back(thisEflowObject);
-      }
-    } else {
-      m_neutralPFOContainer->push_back(thisEflowObject);
-    }
-
-    ElementLink<xAOD::CaloClusterContainer> theClusterLink = thisEfRecCluster->getClusElementLink();
-    bool isSet = thisEflowObject->setClusterLink(theClusterLink);
-    if (!isSet) { msg(MSG::WARNING) << "Could not set Cluster in PFO " << endmsg; }
-
-    const xAOD::CaloCluster* cluster = thisEfRecCluster->getCluster();
-    //be careful here - cluster p4 methods do not store sign. Thus -ve energy clusters have +ve pt and hence +ve energy
-    if (!m_LCMode) {
-      //in EM->EM/LC mode we use eta,phi at EM scale for both 4-vectors
-      thisEflowObject->setP4(cluster->pt(), cluster->rawEta(), cluster->rawPhi(), cluster->m());
-      thisEflowObject->setP4EM(cluster->rawE()/cosh(cluster->rawEta()), cluster->rawEta(),cluster->rawPhi(),cluster->rawM());
-    }
-    else{
-      //in LC-> mode we use the LC 4-vector for the LC scale
-      thisEflowObject->setP4(cluster->pt(), cluster->eta(), cluster->phi(), cluster->m());
-      //we cannot access geometric weights for LC clusters, so we make an approximation of the EM energy by looping over the calocells
-      //Then the EM 4-vector uses the energy/pt at this EM scale + eta,phi from LC 4-vector
-      const CaloClusterCellLink* theCellLink = cluster->getCellLinks();
-      auto theFirstCell = theCellLink->begin();
-      auto theLastCell = theCellLink->end();
-      float emPt = 0.0;
-      for (; theFirstCell != theLastCell; ++theFirstCell){
-	const CaloCell* thisCell = *theFirstCell;
-	emPt += thisCell->e()/cosh(thisCell->eta());
-      }
-      thisEflowObject->setP4EM(emPt,cluster->eta(),cluster->phi(),0.0);//mass is always zero at EM scale
-
-    }
-
-    ATH_MSG_DEBUG("Created neutral PFO with E, pt, eta and phi of " << thisEflowObject->e() << ", " << thisEflowObject->pt() << ", " << thisEflowObject->eta() << " and " << thisEflowObject->phi());
-    
-    thisEflowObject->setCharge(0);
-
-    //now set the moments for touchable clusters (i.e. ones we modify) in LC mode or all clusters in EM mode
-    if ( (m_LCMode && thisEfRecCluster->isTouchable()) || !m_LCMode) {
-      this->addMoment(xAOD::CaloCluster::SECOND_R,xAOD::PFODetails::PFOAttributes::eflowRec_SECOND_R,cluster, thisEflowObject);
-      this->addMoment(xAOD::CaloCluster::CENTER_LAMBDA,xAOD::PFODetails::PFOAttributes::eflowRec_CENTER_LAMBDA,cluster, thisEflowObject);
-      this->addMoment(xAOD::CaloCluster::ENG_BAD_CELLS,xAOD::PFODetails::PFOAttributes::eflowRec_ENG_BAD_CELLS,cluster, thisEflowObject);
-      this->addMoment(xAOD::CaloCluster::N_BAD_CELLS,xAOD::PFODetails::PFOAttributes::eflowRec_N_BAD_CELLS,cluster, thisEflowObject);
-      this->addMoment(xAOD::CaloCluster::BADLARQ_FRAC,xAOD::PFODetails::PFOAttributes::eflowRec_BADLARQ_FRAC,cluster, thisEflowObject);
-      this->addMoment(xAOD::CaloCluster::ENG_POS,xAOD::PFODetails::PFOAttributes::eflowRec_ENG_POS,cluster, thisEflowObject);
-      this->addMoment(xAOD::CaloCluster::AVG_LAR_Q,xAOD::PFODetails::PFOAttributes::eflowRec_AVG_LAR_Q,cluster, thisEflowObject);
-      this->addMoment(xAOD::CaloCluster::AVG_TILE_Q,xAOD::PFODetails::PFOAttributes::eflowRec_AVG_TILE_Q,cluster, thisEflowObject);
-      this->addMoment(xAOD::CaloCluster::ISOLATION,xAOD::PFODetails::PFOAttributes::eflowRec_ISOLATION,cluster, thisEflowObject);
-
-      if (false == m_useAODReductionMomentList){
-	 this->addMoment(xAOD::CaloCluster::LATERAL,xAOD::PFODetails::PFOAttributes::eflowRec_LATERAL,cluster, thisEflowObject);
-	 this->addMoment(xAOD::CaloCluster::LONGITUDINAL,xAOD::PFODetails::PFOAttributes::eflowRec_LONGITUDINAL,cluster, thisEflowObject);
-	 this->addMoment(xAOD::CaloCluster::FIRST_ENG_DENS,xAOD::PFODetails::PFOAttributes::eflowRec_FIRST_ENG_DENS,cluster, thisEflowObject);
-	 this->addMoment(xAOD::CaloCluster::ENG_FRAC_MAX,xAOD::PFODetails::PFOAttributes::eflowRec_ENG_FRAC_MAX,cluster, thisEflowObject);
-	 this->addMoment(xAOD::CaloCluster::SIGNIFICANCE,xAOD::PFODetails::PFOAttributes::eflowRec_SIGNIFICANCE,cluster, thisEflowObject);
-      }
-      if (true == m_useAODReductionMomentList){
-	this->addMoment(xAOD::CaloCluster::SECOND_LAMBDA,xAOD::PFODetails::PFOAttributes::eflowRec_SECOND_LAMBDA,cluster, thisEflowObject);
-	this->addMoment(xAOD::CaloCluster::EM_PROBABILITY,xAOD::PFODetails::PFOAttributes::eflowRec_EM_PROBABILITY,cluster, thisEflowObject);
-      }
-      
-    }
-
-    //First set all the layer energies
-    float layerEnergy_preSamplerB = cluster->eSample(xAOD::CaloCluster::CaloSample::PreSamplerB);
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_PreSamplerB = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_PreSamplerB;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_PreSamplerB, layerEnergy_preSamplerB);
-
-    float layerEnergy_EMB1 = cluster->eSample(xAOD::CaloCluster::CaloSample::EMB1);
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_EMB1 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_EMB1;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_EMB1, layerEnergy_EMB1);
-
-    float layerEnergy_EMB2 = cluster->eSample(xAOD::CaloCluster::CaloSample::EMB2);
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_EMB2 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_EMB2;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_EMB2, layerEnergy_EMB2);
-
-    float layerEnergy_EMB3 = cluster->eSample(xAOD::CaloCluster::CaloSample::EMB3);
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_EMB3 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_EMB3;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_EMB3, layerEnergy_EMB3);
-
-    float layerEnergy_preSamplerE = cluster->eSample(xAOD::CaloCluster::CaloSample::PreSamplerE);
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_PreSamplerE = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_PreSamplerE;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_PreSamplerE, layerEnergy_preSamplerE);
-
-    float layerEnergy_EME1 = cluster->eSample(xAOD::CaloCluster::CaloSample::EME1);
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_EME1 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_EME1;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_EME1, layerEnergy_EME1);
-
-    float layerEnergy_EME2 = cluster->eSample(xAOD::CaloCluster::CaloSample::EME2);
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_EME2 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_EME2;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_EME2, layerEnergy_EME2);
-
-    float layerEnergy_EME3 = cluster->eSample(xAOD::CaloCluster::CaloSample::EME3);
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_EME3 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_EME3;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_EME3, layerEnergy_EME3);
-
-    float layerEnergy_HEC0 = cluster->eSample(xAOD::CaloCluster::CaloSample::HEC0);
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_HEC0 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_HEC0;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_HEC0, layerEnergy_HEC0);
-
-    float layerEnergy_HEC1 = cluster->eSample(xAOD::CaloCluster::CaloSample::HEC1);
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_HEC1 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_HEC1;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_HEC1, layerEnergy_HEC1);
-
-    float layerEnergy_HEC2 = cluster->eSample(xAOD::CaloCluster::CaloSample::HEC2);
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_HEC2 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_HEC2;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_HEC2, layerEnergy_HEC2);
-
-    float layerEnergy_HEC3 = cluster->eSample(xAOD::CaloCluster::CaloSample::HEC3);
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_HEC3 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_HEC3;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_HEC3, layerEnergy_HEC3);
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_TileBar0 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_TileBar0;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_TileBar0, cluster->eSample(xAOD::CaloCluster::CaloSample::TileBar0));
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_TileBar1 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_TileBar1;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_TileBar1, cluster->eSample(xAOD::CaloCluster::CaloSample::TileBar1));
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_TileBar2 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_TileBar2;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_TileBar2, cluster->eSample(xAOD::CaloCluster::CaloSample::TileBar2));
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_TileGap1 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_TileGap1;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_TileGap1, cluster->eSample(xAOD::CaloCluster::CaloSample::TileGap1));
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_TileGap2 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_TileGap2;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_TileGap2, cluster->eSample(xAOD::CaloCluster::CaloSample::TileGap2));
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_TileGap3 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_TileGap3;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_TileGap3, cluster->eSample(xAOD::CaloCluster::CaloSample::TileGap3));
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_TileExt0 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_TileExt0;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_TileExt0, cluster->eSample(xAOD::CaloCluster::CaloSample::TileExt0));
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_TileExt1 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_TileExt1;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_TileExt1, cluster->eSample(xAOD::CaloCluster::CaloSample::TileExt1));
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_TileExt2 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_TileExt2;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_TileExt2, cluster->eSample(xAOD::CaloCluster::CaloSample::TileExt2));
-
-    float layerEnergy_FCAL0 = cluster->eSample(xAOD::CaloCluster::CaloSample::FCAL0);
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_FCAL0 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_FCAL0;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_FCAL0, layerEnergy_FCAL0);
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_FCAL1 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_FCAL1;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_FCAL1, cluster->eSample(xAOD::CaloCluster::CaloSample::FCAL1));
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_FCAL2 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_FCAL2;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_FCAL2, cluster->eSample(xAOD::CaloCluster::CaloSample::FCAL2));
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_MINIFCAL0 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_MINIFCAL0;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_MINIFCAL0, cluster->eSample(xAOD::CaloCluster::CaloSample::MINIFCAL0));
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_MINIFCAL1 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_MINIFCAL1;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_MINIFCAL1, cluster->eSample(xAOD::CaloCluster::CaloSample::MINIFCAL1));
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_MINIFCAL2 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_MINIFCAL2;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_MINIFCAL2, cluster->eSample(xAOD::CaloCluster::CaloSample::MINIFCAL2));
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_MINIFCAL3 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_MINIFCAL3;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_MINIFCAL3, cluster->eSample(xAOD::CaloCluster::CaloSample::MINIFCAL3));
-
-    //now set the layer energies for EMB3 and Tile0 - these are needed if we want to run a GSC style jet calibration, which is binned in EMB3 and Tile0 layer energies
-    
-    float layerEnergy_EM3 = layerEnergy_EMB3 + layerEnergy_EME3;
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_EM3 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_EM3;
-    thisEflowObject->setAttribute( myAttribute_layerEnergy_EM3, layerEnergy_EM3);
-
-    float layerEnergy_TileBar0 = cluster->eSample(xAOD::CaloCluster::CaloSample::TileBar0);
-    float layerEnergy_TileExt0 = cluster->eSample(xAOD::CaloCluster::CaloSample::TileExt0);
-    float layerEnergy_Tile0 = layerEnergy_TileBar0 + layerEnergy_TileExt0;
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_Tile0 = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_Tile0;
-    thisEflowObject->setAttribute(myAttribute_layerEnergy_Tile0, layerEnergy_Tile0);
-
-    //now set properties that are required for jet cleaning
-    float layerEnergy_HEC = layerEnergy_HEC0 + layerEnergy_HEC1 + layerEnergy_HEC2 + layerEnergy_HEC3;
-
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_HEC = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_HEC;
-    thisEflowObject->setAttribute(myAttribute_layerEnergy_HEC, layerEnergy_HEC);
-
-    float layerEnergy_EM = layerEnergy_preSamplerB + layerEnergy_preSamplerE + layerEnergy_EMB1 + layerEnergy_EMB2 + layerEnergy_EMB3 + layerEnergy_EME1 + layerEnergy_EME2 + layerEnergy_EME3 + layerEnergy_FCAL0;
-    xAOD::PFODetails::PFOAttributes myAttribute_layerEnergy_EM = xAOD::PFODetails::PFOAttributes::eflowRec_LAYERENERGY_EM;
-    thisEflowObject->setAttribute(myAttribute_layerEnergy_EM, layerEnergy_EM);
-    
-    float clusterTiming = cluster->time();
-
-    xAOD::PFODetails::PFOAttributes myAttribute_TIMING = xAOD::PFODetails::PFOAttributes::eflowRec_TIMING;
-    thisEflowObject->setAttribute(myAttribute_TIMING, clusterTiming);
-
-    //if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Created neutral EFO with E, eta and phi of " << thisEflowObject->e() << ", " << thisEflowObject->eta() << " and " << thisEflowObject->phi() << std::endl;
-
-  }
-}
-
-void eflowObjectCreatorTool::addMoment(xAOD::CaloCluster::MomentType momentType, xAOD::PFODetails::PFOAttributes pfoAttribute, const xAOD::CaloCluster* theCluster, xAOD::PFO* thePFO){
-  
-  double moment = 0.0;
-  bool isRetrieved = theCluster->retrieveMoment(momentType, moment);
-  if (true == isRetrieved) {
-    xAOD::PFODetails::PFOAttributes myAttribute = pfoAttribute;
-    float float_moment = static_cast<float>(moment);
-    thePFO->setAttribute(myAttribute, float_moment);
-  }
-  else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << " Could not retrieve moment from the CaloCluster " << endmsg;
-  
-}
diff --git a/Reconstruction/eflowRec/src/eflowPreparation.cxx b/Reconstruction/eflowRec/src/eflowPreparation.cxx
deleted file mode 100644
index db545541a3d..00000000000
--- a/Reconstruction/eflowRec/src/eflowPreparation.cxx
+++ /dev/null
@@ -1,559 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/********************************************************************
-
-NAME:     eflowPreparation.cxx
-PACKAGE:  offline/Reconstruction/eflowRec
-
-AUTHORS:  D.R. Tovey
-CREATED:  8th November, 2001
-
-********************************************************************/
-
-#include "eflowRec/eflowUtil.h"
-
-// INCLUDE HEADER FILES:
-
-#include "eflowRec/eflowPreparation.h"
-#include "eflowRec/eflowRecTrack.h"
-#include "eflowRec/eflowRecCluster.h"
-#include "eflowRec/eflowTrackClusterLink.h"
-#include "eflowRec/eflowTrackCaloPoints.h"
-#include "eflowRec/eflowRingSubtractionManager.h"
-#include "eflowRec/eflowEEtaBinnedParameters.h"
-#include "eflowRec/eflowLayerIntegrator.h"
-#include "eflowRec/PFTrackClusterMatchingTool.h"
-
-#include "eflowRec/eflowCaloObject.h"
-#include "eflowRec/eflowTrackExtrapolatorBaseAlgTool.h"
-
-#include "CaloEvent/CaloClusterContainer.h"
-#include "CaloEvent/CaloCluster.h"
-#include "CaloEvent/CaloCellLink.h"
-#include "CaloDetDescr/CaloDetDescrManager.h"
-#include "CaloIdentifier/CaloCell_ID.h"
-#include "xAODCaloEvent/CaloCluster.h"
-#include "xAODCaloEvent/CaloClusterContainer.h"
-#include "xAODCaloEvent/CaloClusterAuxContainer.h"
-
-#include "Particle/TrackParticle.h"
-#include "xAODMuon/Muon.h"
-#include "xAODEgamma/ElectronxAODHelpers.h"
-
-// INCLUDE GAUDI HEADER FILES:
-#include "GaudiKernel/SystemOfUnits.h"
-#include "GaudiKernel/Property.h"
-#include "GaudiKernel/ListItem.h"
-
-#include <algorithm> 
-#include <math.h>
-#include <map>
-#include <iostream>
-
-//  END OF HEADER FILES INCLUDE
-
-//  CONSTRUCTOR:
-    
-eflowPreparation::eflowPreparation(const std::string& name, ISvcLocator* pSvcLocator):
-  AthAlgorithm(name, pSvcLocator),
-  m_caloClusterReadHandle("CaloTopoCluster"),
-  m_caloCalClusterReadHandle("CaloCalTopoCluster"),
-  m_trackReadHandle("InDetTrackParticles"),
-  m_electronReadHandle("Electrons"),
-  m_muonReadHandle("Muons"),
-  m_eflowCaloObjectContainerWriteHandle("eflowCaloObjects01"),
-  m_eflowRecTrackContainerWriteHandle("eflowRecTracks01"),
-  m_eflowRecClusterContainerWriteHandle("eflowRecClusters01"),
-  m_theTrackExtrapolatorTool("Trk::ParticleCaloExtensionTool",this),
-  m_matchingTool("PFTrackClusterMatchingTool/CalObjBldMatchingTool", this),
-  m_eflowMode("FullMode"),
-  m_selectedElectronsWriteHandle("eflowRec_selectedElectrons_EM"),
-  m_leptonCaloCellContainerWriteHandle("eflowRec_leptonCellContainer_EM"),
-  m_useLeptons(true),
-  m_storeLeptonCells(false),
-  m_nMatches(0),
-  m_upperTrackPtCut(100.0)
-{
-// The following properties can be specified at run-time
-// (declared in jobOptions file)
-  declareProperty("ClustersName",m_caloClusterReadHandle );
-  declareProperty("CalClustersName",m_caloCalClusterReadHandle  );
-  declareProperty("TracksName", m_trackReadHandle);
-  declareProperty("EflowCaloObjectsOutputName", m_eflowCaloObjectContainerWriteHandle );
-  declareProperty("EflowRecTracksOutputName",  m_eflowRecTrackContainerWriteHandle);
-  declareProperty("EflowRecClustersOutputName", m_eflowRecClusterContainerWriteHandle);
-  declareProperty("PFTrackClusterMatchingTool", m_matchingTool, "The track-cluster matching tool");
-  declareProperty("TrackExtrapolatorTool", m_theTrackExtrapolatorTool, "AlgTool to use for track extrapolation");
-  declareProperty("EFlowMode", m_eflowMode);
-  declareProperty("electronsName", m_electronReadHandle);
-  declareProperty("muonsName",  m_muonReadHandle);
-  declareProperty("useLeptons", m_useLeptons);
-  declareProperty("storeLeptonCells", m_storeLeptonCells);
-  declareProperty("eflowElectronsName", m_selectedElectronsWriteHandle);
-  declareProperty("eflowLeptonCellsName", m_leptonCaloCellContainerWriteHandle);
-  declareProperty("TrackSelectionTool", m_selTool);
-  declareProperty("UpperTrackPtCut",m_upperTrackPtCut);
-}
-
-eflowPreparation::~eflowPreparation() { }
-
-StatusCode eflowPreparation::initialize() {
-
-  StatusCode sc;
-
-  // tool service
-  IToolSvc* myToolSvc;
-  sc = service("ToolSvc", myToolSvc);
-
-  if (sc.isFailure()) {
-    msg(MSG::WARNING) << " Tool Service Not Found" << endmsg;
-    return StatusCode::SUCCESS;
-  }
-
-  if (m_matchingTool.retrieve().isFailure()) {
-    msg(MSG::WARNING) << "Cannot find PFTrackClusterMatchingTool" << endmsg;
-  }
-
-  sc = m_theTrackExtrapolatorTool.retrieve();
-
-  if (sc.isFailure()) {
-    msg(MSG::WARNING) << "Cannot find eflowTrackToCaloExtrapolatroTool " << endmsg;
-    return StatusCode::SUCCESS;
-  }
-
-  if (m_useLeptons) m_selectedMuons = std::make_unique<xAOD::MuonContainer>(SG::VIEW_ELEMENTS);
-  
-  ATH_CHECK(m_selTool.retrieve());
-
-  return sc;
-}
-
-StatusCode eflowPreparation::finalize() {
-
-  ATH_MSG_INFO("Produced " << m_nMatches << " track-cluster matches.");
-
-  return StatusCode::SUCCESS;
-
-}
-
-StatusCode eflowPreparation::execute() {
-
-  if (m_useLeptons) this->clearContainers();
-  
-  StatusCode sc;
-
-  /* Create the eflowCaloObjectContainer and register it */
-
-
-  sc = m_eflowCaloObjectContainerWriteHandle.record(std::make_unique<eflowCaloObjectContainer>());
-  
-  if (sc.isFailure()) {
-    if (msgLvl(MSG::WARNING)) {
-      msg(MSG::WARNING) << "Could not record eflowCaloObjectContainer in TDS" << endmsg;
-    }
-    return StatusCode::SUCCESS;
-  }
-
-  /* Create the eflowRecTrackContainer and register it */
-  sc =  m_eflowRecTrackContainerWriteHandle.record(std::make_unique<eflowRecTrackContainer>());
-  
-  if (sc.isFailure()) {
-    if (msgLvl(MSG::WARNING)) {
-      msg(MSG::WARNING) << "Could not record eflowRecTrackContainer in TDS" << endmsg;
-    }
-    return StatusCode::SUCCESS;
-  }
-
-  /* Create the eflowRecClusterContainer and register it */
-
-  sc = m_eflowRecClusterContainerWriteHandle.record(std::make_unique<eflowRecClusterContainer>());
-
-  if (sc.isFailure()) {
-    if (msgLvl(MSG::WARNING)) {
-      msg(MSG::WARNING) << "Could not record eflowRecClusterContainer in TDS" << endmsg;
-    }
-    return StatusCode::SUCCESS;
-  }
-
-  if (m_useLeptons) {
-
-    /* Put electron container and list of lepton cells into Storegate 
-     By contrast muons do NOT go into storegate, because they are not needed downstream */
-    if (recordLeptonContainers().isFailure()) {
-      return StatusCode::SUCCESS;
-    }
-
-    /* Select some electrons */
-    sc = this->selectElectrons();
-    if (sc.isFailure()) {
-      //won't mask out the tracks, but issue WARNING
-      if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << " Did not select any electrons " << endmsg;
-    }
-
-    /* Select some muons */
-    sc = this->selectMuons();
-    if (sc.isFailure()) {
-      //won't mask out the tracks, but issue WARNING
-      if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << " Did not select any muons " << endmsg;
-    }
-  }
-
-  /* Create eflowCaloObject static calo cluster container */
-  eflowCaloObject::setClusterContainerPtr(new xAOD::CaloClusterContainer(), new xAOD::CaloClusterAuxContainer());
-  
-  /* Collect all calo clusters from all cluster containers to m_eflowRecClusterContainerWriteHandle */
-  if (makeClusterContainer().isFailure()) {
-    return StatusCode::SUCCESS;
-  }
-
-  /* Apply the track selection, extrapolate, and collect selected tracks to m_eflowRecTrackContainerWriteHandle */
-  if (makeTrackContainer().isFailure()) {
-    return StatusCode::SUCCESS;
-  }
-
-  return StatusCode::SUCCESS;
-}
-
-/////////////////////////////////////////////////////////////////
-void eflowPreparation::retrieveLCCalCellWeight(double energy, unsigned index, std::map<IdentifierHash,double>& cellsWeight) {
-  
-  /* match CaloCluster with CaloCalCluster to obtain cell weight */
-  /* first try the position at 'index'. If we are lucky, the loop can be avoided. */
-  /* Note the read handle has been tested to be valid prior to the call of this function */
-  const xAOD::CaloCluster* matchedCalCluster = m_caloCalClusterReadHandle->at(index);
-  if (!(fabs(energy - matchedCalCluster->rawE()) < 0.001)) {
-    matchedCalCluster = nullptr;
-    for (unsigned iCalCalCluster = 0; iCalCalCluster < m_caloCalClusterReadHandle->size();
-        ++iCalCalCluster) {
-      matchedCalCluster = m_caloCalClusterReadHandle->at(iCalCalCluster);
-      if (fabs(energy - matchedCalCluster->rawE()) < 0.001) {
-        break;
-      }
-    }
-  }
-  assert (matchedCalCluster);
-
-  /* obtain cell index and cell weight */
-  const CaloDetDescrManager*   calo_dd_man  = CaloDetDescrManager::instance();
-  const CaloCell_ID*               calo_id  = calo_dd_man->getCaloCell_ID();
-  xAOD::CaloCluster::const_cell_iterator itCell = matchedCalCluster->cell_begin();
-  xAOD::CaloCluster::const_cell_iterator endCell = matchedCalCluster->cell_end();
-  for (; itCell != endCell; ++itCell) {
-    const CaloCell* pCell = *itCell;
-    Identifier myId = pCell->ID();
-    IdentifierHash myHashId = calo_id->calo_cell_hash(myId);
-    cellsWeight[myHashId] = itCell.weight();
-  }
-
-  return ;
-}
-
-StatusCode eflowPreparation::makeClusterContainer() {
-
-  /* Verify the read handle has a valid pointer, and if not return */
-  if (!m_caloClusterReadHandle.isValid()){
-    msg(MSG::WARNING) << " Can not retrieve xAOD::CaloClusterContainer with name: " <<  m_caloClusterReadHandle.key()  << endmsg;
-    return StatusCode::SUCCESS;
-  }
-  
-  /* Fill the vector of eflowRecClusters */
-  unsigned int nClusters = m_caloClusterReadHandle->size();
-  for (unsigned int iCluster = 0; iCluster < nClusters; ++iCluster) {
-    /* Create the eflowRecCluster and put it in the container */
-    std::unique_ptr<eflowRecCluster> thisEFRecCluster  = std::make_unique<eflowRecCluster>(ElementLink<xAOD::CaloClusterContainer>(*m_caloClusterReadHandle, iCluster));
-    
-    if (m_caloCalClusterReadHandle.isValid()){
-      std::map<IdentifierHash,double> cellsWeightMap;
-      retrieveLCCalCellWeight(m_caloClusterReadHandle->at(iCluster)->e(), iCluster, cellsWeightMap);
-
-      if (msgLvl(MSG::DEBUG)) {
-        //zhangr
-        std::map<IdentifierHash, double>::iterator it = cellsWeightMap.begin();
-        for (; it != cellsWeightMap.end(); ++it) {
-           msg(MSG::DEBUG) << "zhangrui eflowPreparation " << iCluster << "/" << nClusters << ": e="
-                    << m_caloClusterReadHandle->at(iCluster)->e() << " (" << it->first << "  "
-                    << it->second << ")" << endmsg;
-        }
-      }
-
-      thisEFRecCluster->setCellsWeight(cellsWeightMap);
-    }
-    thisEFRecCluster->setClusterId(iCluster);
-    m_eflowRecClusterContainerWriteHandle->push_back(std::move(thisEFRecCluster));
-
-    if (msgLvl(MSG::DEBUG)) {
-      const xAOD::CaloCluster* thisCluster = m_caloClusterReadHandle->at(iCluster);
-      msg(MSG::DEBUG) << "eflowPreparation clus = " << thisCluster->eta() << " "
-		      << thisCluster->phi() << " " << thisCluster->e()/cosh(thisCluster->eta()) << " " << endmsg;
-    }
-  }
-
-  return StatusCode::SUCCESS;
-}
-
-StatusCode eflowPreparation::makeTrackContainer() {
-
-  /* Verify the read handle has a valid pointer, and if not return */
-  if (!m_trackReadHandle.isValid()){
-    if (msgLvl(MSG::WARNING)) { msg(MSG::WARNING) << "Can not retrieve xAOD::TrackParticleContainer with name: " << m_trackReadHandle.key() << endmsg; }
-    return StatusCode::FAILURE;
-  }
-
-  /* Do the track selection for tracks to be used in all of the following steps: */
-  /* TODO (tuning): Check if resize(0) might be faster than clear() */
-  xAOD::TrackParticleContainer::const_iterator itTrackParticle = m_trackReadHandle->begin();
-  int trackIndex = 0;
-  for (; itTrackParticle != m_trackReadHandle->end(); ++itTrackParticle, ++trackIndex) {
-    const xAOD::TrackParticle* track = (*itTrackParticle);
-    if (!track) continue; // TODO: Print a WARNING here!
-
-    ATH_MSG_DEBUG("Have track with E, pt, eta and phi of " << track->e() << ", " << track->pt() << ", " << track->eta() << " and " << track->phi());
-    
-    bool rejectTrack((m_eflowMode == "FullMode") && !selectTrack(track));
-
-    if (m_useLeptons) {
-      bool isElectron = this->isElectron(track);
-      bool isMuon = this->isMuon(track);
-      ATH_MSG_DEBUG("isElectron is " << isElectron << " and isMuon is " << isMuon);
-      if (true == isElectron || true == isMuon) rejectTrack = true;
-    }
-
-    ATH_MSG_DEBUG("rejectTrack is " << rejectTrack);
-    
-    if (!rejectTrack) {
-      /* Create the eflowRecCluster and put it in the container */
-      std::unique_ptr<eflowRecTrack> thisEFRecTrack  = std::make_unique<eflowRecTrack>(ElementLink<xAOD::TrackParticleContainer>(*m_trackReadHandle, trackIndex), m_theTrackExtrapolatorTool);
-      thisEFRecTrack->setTrackId(trackIndex);
-      m_eflowRecTrackContainerWriteHandle->push_back(std::move(thisEFRecTrack));
-    }
-  }
-
-  std::sort(m_eflowRecTrackContainerWriteHandle->begin(), m_eflowRecTrackContainerWriteHandle->end(), eflowRecTrack::SortDescendingPt());
-
-  return StatusCode::SUCCESS;
-}
-
-bool eflowPreparation::selectTrack(const xAOD::TrackParticle* track) {
-  if (track->pt()*0.001 < m_upperTrackPtCut) return m_selTool->accept(*track, track->vertex());
-  else return false;
-}
-
-
-StatusCode eflowPreparation::recordLeptonContainers(){
-
-  StatusCode sc = m_selectedElectronsWriteHandle.record(std::make_unique<xAOD::ElectronContainer>(SG::VIEW_ELEMENTS));
-  
-  if (sc.isFailure()) {
-    if (msgLvl(MSG::WARNING)) msg(MSG::WARNING)
-        << "Could not record egammaContainer in TDS"
-        << endmsg;
-    return sc;
-  }
-
-  if (true == m_storeLeptonCells) {
-
-    //record the cell container
-    sc =  m_leptonCaloCellContainerWriteHandle.record(std::make_unique<ConstDataVector<CaloCellContainer> >(SG::VIEW_ELEMENTS));
-
-    if (sc.isFailure()) {
-      if (msgLvl(MSG::WARNING))
-        msg(MSG::WARNING) << "Could not record eflowRec LeptonCellContainer in TDS" << endmsg;
-      return sc;
-    }
-  }
-
-  return StatusCode::SUCCESS;
-
-}
-
-StatusCode eflowPreparation::selectMuons() {
-
-  const xAOD::MuonContainer* muonContainer = m_muonReadHandle.cptr();
-  
-  if (!muonContainer) {
-    if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << " No xAOD Muon container found in TDS with the name " << m_muonReadHandle.key() << endmsg;    
-    return StatusCode::FAILURE;
-  }
-
-  xAOD::MuonContainer::const_iterator firstMuon = muonContainer->begin();
-  xAOD::MuonContainer::const_iterator lastMuon = muonContainer->end();
-
-  for (; firstMuon != lastMuon; ++firstMuon) {
-    const xAOD::Muon* theMuon = *firstMuon;
-
-    //Details of medium muons are here:
-    //https://twiki.cern.ch/twiki/bin/view/Atlas/MuonSelectionTool
-    //No need to ask for combined muon, by construction other muons will not have ID track - we just ask for medium muons
-    
-    xAOD::Muon::Quality muonQuality = theMuon->quality();
-    if( muonQuality <= xAOD::Muon::Medium) {   
-      if (nullptr != m_selectedMuons.get()){
-	m_selectedMuons->push_back(const_cast<xAOD::Muon*>(theMuon));
-      } else if (msgLvl(MSG::WARNING)) {
-	msg(MSG::WARNING) << " Invalid pointer to m_selectedMuons in selectMuons " << std::endl;
-      }
-      if (true == m_storeLeptonCells) this->storeMuonCells(theMuon);
-    }//Medium muons
-  } //muon loop
-
-  return StatusCode::SUCCESS;
-}
-
-bool eflowPreparation::isMuon(const xAOD::TrackParticle* track){
-
-  if (m_selectedMuons){
-
-    xAOD::MuonContainer::const_iterator firstMuon = m_selectedMuons->begin();
-    xAOD::MuonContainer::const_iterator lastMuon = m_selectedMuons->end();
-    
-    for (; firstMuon != lastMuon ; ++firstMuon){
-      const xAOD::Muon* theMuon = *firstMuon;
-      if (theMuon){
-	ATH_MSG_DEBUG("Considering muon in isMuon with e,pt, eta and phi of " << theMuon->e() << ", " << theMuon->pt() << ", " << theMuon->eta() << " and " << theMuon->phi());
-	const ElementLink< xAOD::TrackParticleContainer > theLink = theMuon->inDetTrackParticleLink();
-	if (theLink.isValid()){
-	  const xAOD::TrackParticle* ID_track = *theLink;
-	  if (ID_track){
-	    if (track == ID_track) return true;
-	    return false;
-	  }
-	  else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "This muon has a NULL pointer to the track " << endmsg;
-	}
-	else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "This muon has an invalid link to the track " << endmsg;
-      }//if muon pointer is valid
-      else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "This muon is a NULL pointer " << endmsg;
-    }//muon loop
-  }
-  else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << " Invalid pointer to m_selectedMuons in isMuon " << std::endl;
-
-  return false;
-}
-
-
-void eflowPreparation::storeMuonCells(const xAOD::Muon* muon){
-
-  const ElementLink<xAOD::CaloClusterContainer> theLink =  muon->clusterLink(); 
-  if (theLink.isValid()){
-    const xAOD::CaloCluster* muonCluster = *theLink;
-    if (muonCluster){
-      this->storeLeptonCells(muonCluster);
-      const CaloClusterCellLink* theCellLink = muonCluster->getCellLinks();
-      CaloClusterCellLink::const_iterator firstCell = theCellLink->begin();
-      CaloClusterCellLink::const_iterator lastCell = theCellLink->end();
-      
-      for (; firstCell != lastCell; ++firstCell){
-      }//cell loop
-      
-    }
-    else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "This muon has an invalid pointer to its cluster " << endmsg;
-  }
-  else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "This muon has an invalid element link to its cluster " << endmsg;
-
-}
-
-
-StatusCode eflowPreparation::selectElectrons(){
-
-  
-  const xAOD::ElectronContainer* egammaContainer = m_electronReadHandle.cptr();
-  if (!egammaContainer){
-    if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << " No Electron container found in TDS" << endmsg;
-    return StatusCode::FAILURE;
-  }
-
-  xAOD::ElectronContainer::const_iterator firstElectron = egammaContainer->begin();
-  xAOD::ElectronContainer::const_iterator lastElectron = egammaContainer->end();
-
-  for (; firstElectron != lastElectron; ++firstElectron){
-
-    const xAOD::Electron* theElectron = *firstElectron;
-    if (theElectron){
-      if (theElectron->pt() > 10000){
-        bool val_med = false;
-	bool gotID = theElectron->passSelection(val_med, "LHMedium");
-	if (!gotID) {
-	  if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Could not get Electron ID " << endmsg;
-	  continue;
-	}
-	if (true == val_med){
-	  if (m_selectedElectronsWriteHandle.isValid()) m_selectedElectronsWriteHandle->push_back(const_cast<xAOD::Electron*>(theElectron));
-	  else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Do not have valid WriteHandle for ElectronContainer with name: " << m_selectedElectronsWriteHandle.key() << endmsg;
-	  if (true == m_storeLeptonCells) this->storeElectronCells(theElectron);
-	}//mediumPP
-      }//10GeV pt cut
-    }//valid egamma pointer
-    else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "This electron is a NULL pointer " << endmsg;
-    
-  }//electron loop
-
-  return StatusCode::SUCCESS;
-
-}
-
-bool eflowPreparation::isElectron(const xAOD::TrackParticle* track){
-
-  if (m_selectedElectronsWriteHandle.isValid()){
-
-    xAOD::ElectronContainer::iterator firstElectron = m_selectedElectronsWriteHandle->begin();
-    xAOD::ElectronContainer::iterator lastElectron = m_selectedElectronsWriteHandle->end();
-    
-    for (; firstElectron != lastElectron; ++firstElectron){
-      const xAOD::Electron* this_egamma = *firstElectron;
-      if (this_egamma){
-	unsigned int nTrack = this_egamma->nTrackParticles();
-	
-	if (0 != nTrack){
-	  
-	  const xAOD::TrackParticle* origTrack = xAOD::EgammaHelpers::getOriginalTrackParticle(this_egamma);
-	  
-	  if (origTrack){
-	    if (track == origTrack) {
-	      return true;
-	    }
-	  }//if valid track pointer
-	  else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Electron object map has NULL pointer to original TrackParticle " << endmsg;
-	}//if has a track
-	else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Electron object has " << nTrack << " tracks " << endmsg;
-      }//if valid pointer
-      else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Electron is a NULL pointer " << endmsg;
-    }//electron loop    
-  }
-  else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << " Invalid pointer to m_selectedElectrons in isElectron " << endmsg;
-
-  return false;
-
-}
-
-void eflowPreparation::storeElectronCells(const xAOD::Egamma* electron){
-
-  const xAOD::CaloCluster* electronCluster = electron->caloCluster(); 
-  if (electronCluster){
-    this->storeLeptonCells(electronCluster);      
-  }
-  else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "This electron has an invalid pointer to its cluster " << endmsg;
-
-}
-
-void eflowPreparation::storeLeptonCells(const xAOD::CaloCluster* theCluster){
-
-  const CaloClusterCellLink* theCellLink = theCluster->getCellLinks();
-
-  if (theCellLink){
-  
-    CaloClusterCellLink::const_iterator firstCell = theCellLink->begin();
-    CaloClusterCellLink::const_iterator lastCell = theCellLink->end();
-    
-    for (; firstCell != lastCell; ++firstCell){
-      if (m_leptonCaloCellContainerWriteHandle.isValid()) m_leptonCaloCellContainerWriteHandle->push_back(*firstCell);
-      else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << " Invalid pointer to m_leptonCellContainer in storeLeptonCells" << endmsg;
-    }//cell loop
-  }
- else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "This cluster has an invalid pointer to its cells, in storeLeptonCells " << endmsg;
-
-}
-
-void eflowPreparation::clearContainers(){
-  if (m_useLeptons && m_selectedMuons) m_selectedMuons->clear();
-}
diff --git a/Reconstruction/eflowRec/src/eflowRecoverSplitShowersTool.cxx b/Reconstruction/eflowRec/src/eflowRecoverSplitShowersTool.cxx
deleted file mode 100644
index 64c8ae81d46..00000000000
--- a/Reconstruction/eflowRec/src/eflowRecoverSplitShowersTool.cxx
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/********************************************************************
-
-NAME: eflowRecoverSplitShowersTool.cxx
-PACKAGE: offline/Reconstruction/eflowRec
-
-AUTHOR: Thomas Velz, Mark Hodgkinson
-CREATED: 16 January 2014
-
-********************************************************************/
-
-#include "eflowRec/eflowRecoverSplitShowersTool.h"
-#include "eflowRec/eflowUtil.h"
-
-#include "eflowRec/eflowRecCluster.h"
-#include "eflowRec/eflowRecTrack.h"
-#include "eflowRec/eflowTrackClusterLink.h"
-#include "eflowRec/eflowCaloObject.h"
-#include "eflowRec/eflowCaloObjectMaker.h"
-#include "eflowRec/eflowTrackCaloPoints.h"
-#include "eflowRec/eflowCellList.h"
-#include "eflowRec/IEFlowCellEOverPTool.h"
-#include "eflowRec/PFTrackClusterMatchingTool.h"
-#include "eflowRec/eflowEEtaBinnedParameters.h"
-#include "eflowRec/eflowLayerIntegrator.h"
-#include "eflowRec/eflowRingSubtractionManager.h"
-#include "eflowRec/eflowCellSubtractionFacilitator.h"
-#include "eflowRec/eflowSubtractor.h"
-
-#include "CaloEvent/CaloClusterContainer.h"
-#include "xAODCaloEvent/CaloClusterKineHelper.h"
-
-using namespace eflowSubtract;
-
-eflowRecoverSplitShowersTool::eflowRecoverSplitShowersTool(const std::string& type,const std::string& name,const IInterface* parent):
-AthAlgTool(type, name, parent),
-m_eflowCaloObjectContainer(0),
-m_rCell(0.75),
-m_windowRms(0.032),
-m_theEOverPTool("eflowCellEOverPTool",this),
-m_matchingTool("PFTrackClusterMatchingTool/RcvrSpltMatchingTool", this),
-m_binnedParameters(std::make_unique<eflowEEtaBinnedParameters>()),
-m_integrator(std::make_unique<eflowLayerIntegrator>(m_windowRms, 1.0e-3, 3.0)),
-m_subtractionSigmaCut(1.5),
-m_recoverIsolatedTracks(false),
-m_nTrackClusterMatches(0),
-m_useUpdated2015ChargedShowerSubtraction(true)
-{
-  declareInterface<eflowRecoverSplitShowersTool>(this);
-  declareProperty("SubtractionSigmaCut",m_subtractionSigmaCut);
-  declareProperty("eflowCellEOverPTool", m_theEOverPTool,"Energy Flow E/P Values and Shower Parameters Tool");
-  declareProperty("PFTrackClusterMatchingTool", m_matchingTool, "The track-cluster matching tool");
-  declareProperty("RecoverIsolatedTracks",m_recoverIsolatedTracks,"Whether to recover isolated tracks also");
-  declareProperty("useUpdated2015ChargedShowerSubtraction",m_useUpdated2015ChargedShowerSubtraction,"Toggle whether to use updated 2015 charged shower subtraction, which disables the shower subtraction in high calorimeter energy density region");
-  eflowRingSubtractionManager::setRMaxAndWeightRange(m_rCell, 1.0e6);
-}
-
-eflowRecoverSplitShowersTool::~eflowRecoverSplitShowersTool() {}
-
-StatusCode eflowRecoverSplitShowersTool::initialize(){
-
-  // tool service
-  IToolSvc* myToolSvc;
-  if ( service("ToolSvc",myToolSvc).isFailure() ) {
-    msg(MSG::WARNING) << " Tool Service Not Found" << endmsg;
-    return StatusCode::SUCCESS;
-  }
-
-  if (m_matchingTool.retrieve().isFailure()){
-    msg(MSG::WARNING) << "Couldn't retrieve PFTrackClusterMatchingTool." << endmsg;
-    return StatusCode::SUCCESS;
-  }
-
-  if (m_theEOverPTool.retrieve().isFailure()){
-    msg(MSG::WARNING) << "Cannot find eflowEOverPTool" << endmsg;
-    return StatusCode::SUCCESS;
-  }
-
-  if (m_theEOverPTool->execute(m_binnedParameters.get()).isFailure()){
-    msg(MSG::WARNING) << "Could not execute eflowCellEOverPTool " << endmsg;
-    return StatusCode::SUCCESS;
-  }
-
-  return StatusCode::SUCCESS;
-}
-
-void eflowRecoverSplitShowersTool::execute(eflowCaloObjectContainer* theEflowCaloObjectContainer, eflowRecTrackContainer*, eflowRecClusterContainer*){
-
-  msg(MSG::DEBUG) << "Executing eflowRecoverSplitShowersTool" << endmsg;
-
-  m_eflowCaloObjectContainer = theEflowCaloObjectContainer;
-
-  recycleTracksClusters();
-
-  /* Add each track to its matching cluster's eflowCaloObject */
-  int const nOriginalObj = matchAndCreateEflowCaloObj();
-
-  /* Extrapolate tracks, match clusters, do shower simulation, run cell subtraction */
-  performRecovery(nOriginalObj);
-
-}
-
-StatusCode eflowRecoverSplitShowersTool::finalize(){
-
-  ATH_MSG_INFO("Produced " << m_nTrackClusterMatches << " track-cluster matches.");
-
-  return StatusCode::SUCCESS;
-
-}
-void eflowRecoverSplitShowersTool::recycleTracksClusters() {
-  getTracksToRecover();
-  getClustersToConsider();
-
-}
-
-void eflowRecoverSplitShowersTool::getClustersToConsider() {
-
-  m_clustersToConsider.clear();
-
-  eflowCaloObjectContainer::iterator  itEFCalObject = m_eflowCaloObjectContainer->begin();
-  eflowCaloObjectContainer::iterator endEFCalObject = m_eflowCaloObjectContainer->end();
-  for (; itEFCalObject != endEFCalObject; ++itEFCalObject) {
-    eflowCaloObject* thisEflowCaloObject = *itEFCalObject;
-
-    if (thisEflowCaloObject->nClusters() == 0) { continue; }
-
-    for(unsigned i=0; i<thisEflowCaloObject->nClusters(); ++i){
-        /* Skip empty clusters (subtraction remnants) */
-        const CaloClusterCellLink* theCellLink = thisEflowCaloObject->efRecCluster(i)->getCluster()->getCellLinks();
-        if (0 == (int)theCellLink->size()){ continue; }
-
-        thisEflowCaloObject->efRecCluster(i)->clearTrackMatches();
-        m_clustersToConsider.push_back(thisEflowCaloObject->efRecCluster(i));
-        thisEflowCaloObject->clearClusters();
-        thisEflowCaloObject->clearLinks();
-    }
-  }
-
-  std::sort(m_clustersToConsider.begin(),m_clustersToConsider.end(),eflowRecCluster::SortDescendingPt());
-}
-
-void eflowRecoverSplitShowersTool::getTracksToRecover() {
-
-  m_tracksToRecover.clear(); int iEFCalOb=0;
-  eflowCaloObjectContainer::iterator  itEFCalObject = m_eflowCaloObjectContainer->begin();
-  eflowCaloObjectContainer::iterator endEFCalObject = m_eflowCaloObjectContainer->end();
-  for (; itEFCalObject != endEFCalObject; ++itEFCalObject, ++iEFCalOb) {
-    eflowCaloObject* thisEflowCaloObject = *itEFCalObject;
-
-    /* Skip isolated tracks if flag set */
-    if (!m_recoverIsolatedTracks && thisEflowCaloObject->nClusters() == 0) {
-      unsigned int nTrk = thisEflowCaloObject->nTracks();
-      /* But make sure we get eflowObjects from them
-       * TODO: replace this mechanism by something better */
-      for (unsigned int iTrk = 0; iTrk < nTrk; ++iTrk) {
-        thisEflowCaloObject->efRecTrack(iTrk)->setSubtracted();
-      }
-      continue;
-    }
-
-    /* Add all tracks on the eflowCaloObject that haven't been subtracted yet*/
-    std::vector<eflowRecTrack*> updatedTracks; updatedTracks.clear();
-    unsigned int nTracks = thisEflowCaloObject->nTracks();
-
-    /* For cluster-only CaloObjects */
-    if(nTracks == 0) continue;
-
-    /* For track-only and track-cluster CaloObjects */
-    for (unsigned int iTrack = 0; iTrack < nTracks; ++iTrack){
-      eflowRecTrack* thisEfRecTrack = thisEflowCaloObject->efRecTrack(iTrack);
-      if (thisEfRecTrack->isSubtracted()){
-        updatedTracks.push_back(thisEfRecTrack);
-        continue;
-      }
-      thisEfRecTrack->clearClusterMatches();
-      m_tracksToRecover.push_back(thisEfRecTrack);
-    }
-    thisEflowCaloObject->clearTracks();
-    if (!updatedTracks.empty()) {
-      thisEflowCaloObject->addTracks(updatedTracks);
-      updatedTracks.clear();
-    } else {
-      thisEflowCaloObject->clearLinks();
-    }
-  }
-
-  std::sort(m_tracksToRecover.begin(),m_tracksToRecover.end(),eflowRecTrack::SortDescendingPt());
-
-}
-
-int eflowRecoverSplitShowersTool::matchAndCreateEflowCaloObj() {
-  /* Cache the original number of eflowCaloObjects */
-  const int nCaloObj = m_eflowCaloObjectContainer->size();
-
-  std::vector<eflowRecTrack*>::iterator endEfRecTrack = m_tracksToRecover.end();
-  /* loop tracks in m_tracksToRecover and do matching */
-  for (std::vector<eflowRecTrack*>::iterator itEfRecTrack = m_tracksToRecover.begin();
-      itEfRecTrack != endEfRecTrack; ++itEfRecTrack) {
-    eflowRecTrack* thisEfRecTrack = *itEfRecTrack;
-    /* No point to do anything if bin does not exist */
-    if (!thisEfRecTrack->hasBin()) {
-      std::unique_ptr<eflowCaloObject> thisEflowCaloObject = std::make_unique<eflowCaloObject>();
-      thisEflowCaloObject->addTrack(thisEfRecTrack);
-      m_eflowCaloObjectContainer->push_back(std::move(thisEflowCaloObject));
-      continue;
-    }
-    if (msgLvl(MSG::WARNING)){
-      const xAOD::TrackParticle* track = thisEfRecTrack->getTrack();
-      msg(MSG::DEBUG) << "Recovering charged EFO with e,eta and phi " << track->e() << ", "
-                << track->eta() << " and " << track->phi() << endmsg;
-    }
-    /* Get list of matched clusters */
-    std::vector<eflowRecCluster*> matchedClusters = m_matchingTool->doMatches(thisEfRecTrack, m_clustersToConsider, -1);
-    if (matchedClusters.empty()) { continue; }
-
-    m_nTrackClusterMatches += matchedClusters.size();
-    /* Matched cluster: create TrackClusterLink and add it to both the track and the cluster (eflowCaloObject will be created later) */
-    std::vector<eflowRecCluster*>::const_iterator itCluster = matchedClusters.begin();
-    std::vector<eflowRecCluster*>::const_iterator endCluster = matchedClusters.end();
-    for (; itCluster != endCluster; ++itCluster) {
-      eflowTrackClusterLink* trackClusterLink = eflowTrackClusterLink::getInstance(thisEfRecTrack,
-                                                                                   (*itCluster));
-      thisEfRecTrack->addClusterMatch(trackClusterLink);
-      (*itCluster)->addTrackMatch(trackClusterLink);
-    }
-  }
-
-  /* Create all eflowCaloObjects that contain eflowRecCluster */
-  eflowCaloObjectMaker makeCaloObject;
-  int nCaloObjects = makeCaloObject.makeTrkCluCaloObjects(m_tracksToRecover, m_clustersToConsider,
-                                                          m_eflowCaloObjectContainer);
-  msg(MSG::DEBUG) << "eflowRecoverSplitShowersTool created " << nCaloObjects << " CaloObjects." << endmsg;
-
-  /* integrate cells; determine FLI; eoverp */
-  for (unsigned int iCalo = nCaloObj; iCalo < m_eflowCaloObjectContainer->size(); ++iCalo) {
-    eflowCaloObject* thisEflowCaloObject = m_eflowCaloObjectContainer->at(iCalo);
-    thisEflowCaloObject->simulateShower(m_integrator.get(), m_binnedParameters.get(), m_useUpdated2015ChargedShowerSubtraction);
-  }
-  return nCaloObj;
-}
-
-void eflowRecoverSplitShowersTool::performSubtraction(eflowCaloObject* thisEflowCaloObject) {
-  for (unsigned iTrack = 0; iTrack < thisEflowCaloObject->nTracks(); ++iTrack) {
-    eflowRecTrack* thisEfRecTrack = thisEflowCaloObject->efRecTrack(iTrack);
-    /* Get matched cluster via Links */
-    std::vector<eflowRecCluster*> matchedClusters;
-    matchedClusters.clear();
-    std::vector<eflowTrackClusterLink*> links = thisEfRecTrack->getClusterMatches();
-    std::vector<eflowTrackClusterLink*>::iterator itLink = links.begin();
-    std::vector<eflowTrackClusterLink*>::iterator endLink = links.end();
-    for (; itLink != endLink; ++itLink) {
-      matchedClusters.push_back((*itLink)->getCluster());
-    }
-    /* Do subtraction */
-    std::vector<xAOD::CaloCluster*> clusterSubtractionList;
-    std::vector<eflowRecCluster*>::const_iterator itCluster = matchedClusters.begin();
-    std::vector<eflowRecCluster*>::const_iterator endCluster = matchedClusters.end();
-    for (; itCluster != endCluster; ++itCluster) {
-      clusterSubtractionList.push_back(
-          (*itCluster)->getClusterForModification(eflowCaloObject::getClusterContainerPtr()));
-    }
-    if (getSumEnergy(clusterSubtractionList) - thisEfRecTrack->getEExpect() < m_subtractionSigmaCut
-        * sqrt(thisEfRecTrack->getVarEExpect())) {
-      /* Check if we can annihilate right away */
-      Subtractor::annihilateClusters(clusterSubtractionList);
-    } else {
-      /* Subtract the track from all matched clusters */
-      Subtractor::subtractTracksFromClusters(thisEfRecTrack, clusterSubtractionList);
-      /* Annihilate the cluster(s) if the remnant is small (i.e. below k*sigma) */
-      if (getSumEnergy(clusterSubtractionList) < m_subtractionSigmaCut
-          * sqrt(thisEfRecTrack->getVarEExpect())) {
-        Subtractor::annihilateClusters(clusterSubtractionList);
-      }
-    }
-    /* Flag tracks as subtracted */
-    thisEfRecTrack->setSubtracted();
-  }
-}
-
-void eflowRecoverSplitShowersTool::performRecovery(int const nOriginalObj) {
-  unsigned int nEFCaloObs = m_eflowCaloObjectContainer->size();
-  for (unsigned int iCalo = nOriginalObj; iCalo < nEFCaloObs; ++iCalo) {
-    eflowCaloObject* thisEflowCaloObject = m_eflowCaloObjectContainer->at(iCalo);
-
-    performSubtraction(thisEflowCaloObject);
-  }
-
-}
-
-
-double eflowRecoverSplitShowersTool::getSumEnergy(const std::vector<xAOD::CaloCluster*>& clusters) {
-  double result = 0.0;
-  std::vector<xAOD::CaloCluster*>::const_iterator  itCluster = clusters.begin();
-  std::vector<xAOD::CaloCluster*>::const_iterator endCluster = clusters.end();
-  for (; itCluster != endCluster; ++itCluster) {
-    result += (*itCluster)->e();
-  }
-  return result;
-}
diff --git a/Reconstruction/eflowRec/src/eflowSubtractor.cxx b/Reconstruction/eflowRec/src/eflowSubtractor.cxx
index e2ac9d881fe..4befe49976a 100644
--- a/Reconstruction/eflowRec/src/eflowSubtractor.cxx
+++ b/Reconstruction/eflowRec/src/eflowSubtractor.cxx
@@ -12,7 +12,6 @@
 #include "xAODCaloEvent/CaloCluster.h"
 #include "xAODCaloEvent/CaloCluster.h"
 #include "xAODCaloEvent/CaloClusterKineHelper.h"
-#include "eflowRec/eflowCellLevelSubtractionTool.h"
 #include "eflowRec/eflowRecTrack.h"
 #include "eflowRec/eflowRecCluster.h"
 #include "eflowRec/eflowTrackClusterLink.h"
diff --git a/Reconstruction/eflowRec/src/eflowVertexInformationSetter.cxx b/Reconstruction/eflowRec/src/eflowVertexInformationSetter.cxx
deleted file mode 100644
index 4f0dd536380..00000000000
--- a/Reconstruction/eflowRec/src/eflowVertexInformationSetter.cxx
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#include "eflowRec/eflowVertexInformationSetter.h"
-
-#include "xAODPFlow/PFOContainer.h"
-#include "xAODPFlow/PFO.h"
-
-#include "xAODCaloEvent/CaloCluster.h"
-
-eflowVertexInformationSetter::eflowVertexInformationSetter(const std::string& name,ISvcLocator* pSvcLocator): AthAlgorithm(name, pSvcLocator), m_PFOName("JetETMissNeutralParticleFlowObjects") {
-declareProperty("PFOInputName",m_PFOName,"Name of container of PFO to use");
- m_storeGate = nullptr;
-}
-
-eflowVertexInformationSetter::~eflowVertexInformationSetter() {}
-
-StatusCode eflowVertexInformationSetter::initialize(){
-
-  StatusCode sc = service("StoreGateSvc", m_storeGate);
-  if (sc.isFailure())
-    {
-      msg(MSG::WARNING )
-	  << "Unable to retrieve pointer to StoreGateSvc"
-	  << endmsg;
-      return StatusCode::SUCCESS;
-    }
-
-  return StatusCode::SUCCESS;
-}
-
-StatusCode eflowVertexInformationSetter::execute(){
-
-  const xAOD::PFOContainer* PFOContainer;
-
-  StatusCode sc = m_storeGate->retrieve(PFOContainer,m_PFOName);
-  if(sc.isFailure() || ! PFOContainer)
-    {
-      if (msgLvl(MSG::WARNING)) msg(MSG::WARNING)
-				  <<" no PFO container"
-				  <<endmsg;
-      return StatusCode::SUCCESS;
-    }
-
-  xAOD::PFOContainer::const_iterator firstPFO = PFOContainer->begin();
-  xAOD::PFOContainer::const_iterator lastPFO = PFOContainer->end();
-
-  for (; firstPFO != lastPFO; ++firstPFO){
-
-    const xAOD::PFO* thisPFO = *firstPFO;
-    
-    if (0 == thisPFO->charge()){
-
-      const xAOD::CaloCluster* thisClus = thisPFO->cluster(0);
-
-      if (thisClus){
-
-	double center_mag = 0.0;
-	bool isRetrieved = thisClus->retrieveMoment(xAOD::CaloCluster::CENTER_MAG, center_mag );
-	if (true == isRetrieved) {
-	  xAOD::PFO* nonConstPFO = const_cast<xAOD::PFO*>(thisPFO);
-	  nonConstPFO->setCenterMag(center_mag);
-	}
-	else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << " Could not retrieved ENG_FRAC_CORE from the CaloCluster " << endmsg;
-      }
-      else if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << " Got neutral PFO with invalid cluster pointer " << endmsg;
-    }//neutral
-  }//PFO loop
-
-
-  return StatusCode::SUCCESS;
-}
-
-StatusCode eflowVertexInformationSetter::finalize(){
-  return StatusCode::SUCCESS;
-}
-- 
GitLab