diff --git a/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/CMakeLists.txt b/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/CMakeLists.txt
deleted file mode 100644
index 9c0c0da0f630868c6d7f4a4fb7308211985466ea..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/CMakeLists.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-################################################################################
-# Package: InDetZVTOP_Alg
-################################################################################
-
-# Declare the package name:
-atlas_subdir( InDetZVTOP_Alg )
-
-# Declare the package's dependencies:
-atlas_depends_on_subdirs( PUBLIC
-                          Control/AthenaBaseComps
-                          GaudiKernel
-                          Tracking/TrkEvent/TrkParticleBase
-                          PRIVATE
-                          InnerDetector/InDetRecTools/InDetRecToolInterfaces
-                          Tracking/TrkEvent/TrkTrack
-                          Tracking/TrkEvent/VxVertex )
-
-# Component(s) in the package:
-atlas_add_component( InDetZVTOP_Alg
-                     src/*.cxx
-                     src/components/*.cxx
-                     LINK_LIBRARIES AthenaBaseComps GaudiKernel TrkParticleBase InDetRecToolInterfaces TrkTrack VxVertex )
-
-# Install files from the package:
-atlas_install_headers( InDetZVTOP_Alg )
-
diff --git a/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/InDetZVTOP_Alg/ATLAS_CHECK_THREAD_SAFETY b/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/InDetZVTOP_Alg/ATLAS_CHECK_THREAD_SAFETY
deleted file mode 100644
index ba4b2e20a5e4cac3d465c61c20c866c1e2328a44..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/InDetZVTOP_Alg/ATLAS_CHECK_THREAD_SAFETY
+++ /dev/null
@@ -1 +0,0 @@
-InnerDetector/InDetRecAlgs/InDetZVTOP_Alg
diff --git a/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/InDetZVTOP_Alg/InDetZVTOP_Alg.h b/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/InDetZVTOP_Alg/InDetZVTOP_Alg.h
deleted file mode 100755
index 7828c716660085ece136bcab01c27ff45849cad5..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/InDetZVTOP_Alg/InDetZVTOP_Alg.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// InDetZVTOP_Alg.h, (c) ATLAS Detector software
-// begin   : 30-10-2006
-// authors : Tatjana Lenz
-// email   : tatjana.lenz@cern.ch
-// changes :
-///////////////////////////////////////////////////////////////////
-
-#ifndef INDETZVTOP_ALG_H
-#define INDETZVTOP_ALG_H
-
-// Gaudi includes
-#include "AthenaBaseComps/AthAlgorithm.h"
-#include "GaudiKernel/ToolHandle.h"
-#include "TrkParticleBase/TrackParticleBase.h"
-namespace InDet 
-{
-
-  /** @class InDetZVTOP_Alg
-     ---Topological Vertex Finder ---
-      This Algorithm reconstructs a set of topological vertices each 
-      associated with an independent subset of the charged tracks.
-      Vertices are reconstructed by associating tracks with 3D spatial regions
-      according to the vertex probability function which is based on the trajectories
-      and position resolution of the tracks.
-      
-      Docu: "A Topological Vertex Reconstruction Algorithm for Hadronic Jets" 
-            by David J. Jackson, SLAC-PUB-7215, December 1996 
-      
-      @author  Tatjana Lenz <tatjana.lenz@cern.ch>
-  */  
-
-  class IVertexFinder;
-
-  class InDetZVTOP_Alg : public AthAlgorithm
-    {
-    public:
-
-       /** Standard Athena-Algorithm Constructor */
-       InDetZVTOP_Alg(const std::string& name, ISvcLocator* pSvcLocator);
-       /** Default Destructor */
-       ~InDetZVTOP_Alg();
-
-       /** standard Athena-Algorithm method */
-       StatusCode          initialize();
-       /** standard Athena-Algorithm method */
-       StatusCode          execute();
-       /** standard Athena-Algorithm method */
-       StatusCode          finalize();
-
-    private:
-
-      /** member variables for algorithm properties: */
-
-      std::string				m_tracksName; //!< Name of track container in StoreGate
-      std::string				m_vxCollectionOutputName; //!< Name of output container to store results
-    
-      ToolHandle <IVertexFinder>		m_VertexFinderTool;
-
-      
-    }; 
-} // end of namespace
-
-#endif 
diff --git a/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/doc/packagedoc.h b/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/doc/packagedoc.h
deleted file mode 100644
index fc896bb881af3051de31871f6c35cc724ac3df33..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/doc/packagedoc.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/**
-@page InDetZVTOP_Alg_page ZVTOP_Algs Package
-
-contains: <br>
-- ConversionFinder.cxx <br>
-
-@author Tatjana Lenz <tatjana.lenz@cern.ch>
-
-@section InDetZVTOP_Alg_ZVTOP_AlgsIntro Introduction
-
-ZVTOP_Algs is a package which contains algorithm to reconstruct vertices. The only job is to call a vertex finder tool - InDetZVTOPVxFinder (see InnerDetector/InDetRecTools/InDetZVTOPVxFinder). The topological vertex finder has been developed by David J. Jackson, Nucl.Instrum.Meth.A388: 247-253, 1997 and now implemented to ATHENA and adjusted  to ATLAS requirements. It reconstructs a set of vertices & associated subset of the charged tracks. The association accords to a vertex probability function which is based on the trajectories and position resolution of the tracks.
-
-
-
-*/
diff --git a/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/src/InDetZVTOP_Alg.cxx b/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/src/InDetZVTOP_Alg.cxx
deleted file mode 100755
index ef1fe93810a471d7cace51553624a8258288842a..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/src/InDetZVTOP_Alg.cxx
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// InDetZVTOP_Alg.cxx, (c) ATLAS Detector software
-// begin   : 30-10-2006
-// authors : Tatjana Lenz
-// email   : tatjana.lenz@cern.ch
-// changes :
-///////////////////////////////////////////////////////////////////
-
-#include "InDetZVTOP_Alg/InDetZVTOP_Alg.h"
-#include "InDetRecToolInterfaces/IVertexFinder.h"
-#include "TrkTrack/TrackCollection.h"
-#include "TrkParticleBase/TrackParticleBaseCollection.h"
-#include "VxVertex/VxContainer.h"
-
-//================ Constructor =================================================
-
-InDet::InDetZVTOP_Alg::InDetZVTOP_Alg(const std::string& name, ISvcLocator* pSvcLocator)
-  :
-  AthAlgorithm(name,pSvcLocator),
-  m_tracksName("Tracks"),
-  m_vxCollectionOutputName("VxCollection"),
-  m_VertexFinderTool("InDet::ZVTOP_Tool")
-{
-  //  template for property declaration
-    declareProperty("TracksName",m_tracksName);
-    declareProperty("VxCollectionOutputName",m_vxCollectionOutputName);
-    declareProperty("VertexFinderTool",m_VertexFinderTool);
-}
-
-//================ Destructor =================================================
-
-InDet::InDetZVTOP_Alg::~InDetZVTOP_Alg()
-{}
-
-
-//================ Initialisation =================================================
-
-StatusCode InDet::InDetZVTOP_Alg::initialize()
-{
-  // Code entered here will be executed once at program start.
-  
-  msg (MSG::INFO) << MSG::INFO << name() << " initialize()" << endmsg;
-
-  /* Get the VertexFinderTool */
-   if ( m_VertexFinderTool.retrieve().isFailure() ) {
-      msg( MSG::FATAL ) << "Failed to retrieve tool " << m_VertexFinderTool << endmsg;
-      return StatusCode::FAILURE;
-   } else msg ( MSG::INFO ) << "Retrieved tool " << m_VertexFinderTool<< endmsg;
-
-
-  msg ( MSG::INFO ) << "initialize() successful in " << name() << endmsg;
-  return StatusCode::SUCCESS;
-}
-
-//================ Finalisation =================================================
-
-StatusCode InDet::InDetZVTOP_Alg::finalize()
-{
-  // Code entered here will be executed once at the end of the program run.
-  return StatusCode::SUCCESS;
-}
-
-//================ Execution ====================================================
-
-StatusCode InDet::InDetZVTOP_Alg::execute()
-{
-  //VxContainer* theVxContainer(0); --David S.
-  xAOD::VertexContainer* theXAODContainer = 0;
-  xAOD::VertexAuxContainer* theXAODAuxContainer = 0;
-  std::pair<xAOD::VertexContainer*,xAOD::VertexAuxContainer*> theXAODContainers
-      = std::make_pair( theXAODContainer, theXAODAuxContainer );
-  std::string vxContainerAuxName = m_vxCollectionOutputName + "Aux.";
-
-  //---- Retrieve tracks from StoreGate section ----------------------------------------//
-  if(evtStore()->contains<TrackCollection>(m_tracksName))
-    {
-      const TrackCollection *trackTES(0);
-      if (evtStore()->retrieve(trackTES, m_tracksName).isFailure())
-      {
-        if(msgLvl(MSG::DEBUG)) msg() << "Could not find TrackCollection " << m_tracksName << " in StoreGate." << endmsg;
-        return StatusCode::SUCCESS;
-      } else if (msgLvl(MSG::VERBOSE)) msg() << "Find TrackCollection " << m_tracksName << " in StoreGate." << endmsg;
-      if (msgLvl(MSG::VERBOSE)) msg() << "Number of tracks  = " << trackTES->size() << endmsg;
-      //theVxContainer = m_VertexFinderTool->findVertex(trackTES); --David S.
-      theXAODContainers = m_VertexFinderTool->findVertex(trackTES);
-    }
-  else {
-    if (msgLvl(MSG::DEBUG)) msg() << "Not TrackCollection  with key " << m_tracksName << " exist." << endmsg;
-    //add check for xAOD::TrackParticleContainer --David S.
-    if(evtStore()->contains<xAOD::TrackParticleContainer>(m_tracksName))
-    {
-      if (msgLvl (MSG::DEBUG)) msg() << "xAOD::TrackParticleContainer with key " << m_tracksName << " found, but no findVertex method implemented yet for these objects." << endmsg; 
-    }
-  }
-  //---- Recording section: write the results to StoreGate ---//
-  //if (msgLvl(MSG::VERBOSE)) msg() << "Recording to StoreGate: " << m_vxCollectionOutputName << endmsg; --David S.
-  if (msgLvl(MSG::VERBOSE)) msg() << "Recording to StoreGate: " << m_vxCollectionOutputName << " with AuxContainer " << vxContainerAuxName << endmsg;
-  //if (evtStore()->record(theVxContainer,m_vxCollectionOutputName,false).isFailure()) --David S.
-  if (evtStore()->record(theXAODContainers.first,m_vxCollectionOutputName,false).isFailure())
-    {
-      //if (msgLvl(MSG::INFO)) msg() << "Unable to record VxContainer in TDS" << endmsg; --David S.
-      if (msgLvl(MSG::INFO)) msg() << "Unable to record VertexContainer in TDS" << endmsg;
-      return StatusCode::FAILURE;
-    }
-  //add record AuxContainer to StoreGate --David S.
-  if (evtStore()->record(theXAODContainers.second,vxContainerAuxName).isFailure())
-    {
-      if (msgLvl(MSG::INFO)) msg() << "Unable to record VertexAuxContainer in TDS" << endmsg;
-      return StatusCode::FAILURE;
-    }
-  return StatusCode::SUCCESS;
-}
-
-//============================================================================================
-
diff --git a/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/src/components/InDetZVTOP_Alg_entries.cxx b/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/src/components/InDetZVTOP_Alg_entries.cxx
deleted file mode 100644
index f32c0279c77db947f8a1d47defb3e8340d824366..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecAlgs/InDetZVTOP_Alg/src/components/InDetZVTOP_Alg_entries.cxx
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "InDetZVTOP_Alg/InDetZVTOP_Alg.h"
-
-using namespace InDet;
-
-DECLARE_COMPONENT( InDetZVTOP_Alg )
-
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/CMakeLists.txt b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/CMakeLists.txt
deleted file mode 100644
index 25ac53811b24da7cb37c69ca78d19568ea24283c..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/CMakeLists.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-################################################################################
-# Package: InDetZVTOPVxFinder
-################################################################################
-
-# Declare the package name:
-atlas_subdir( InDetZVTOPVxFinder )
-
-# declare the package's dependencies:
-atlas_depends_on_subdirs( PUBLIC
-                          Control/AthenaBaseComps
-                          GaudiKernel
-                          InnerDetector/InDetRecTools/InDetRecToolInterfaces
-                          Tracking/TrkEvent/VxVertex
-                          Tracking/TrkEvent/TrkTrack
-                          Reconstruction/Particle
-                          Tracking/TrkEvent/TrkParticleBase
-                          Tracking/TrkEvent/TrkParameters
-                          Event/xAOD/xAODTracking
-                          PRIVATE
-                          Control/AthContainers
-                          InnerDetector/InDetConditions/InDetBeamSpotService
-                          Tracking/TrkExtrapolation/TrkExInterfaces
-                          Tracking/TrkDetDescr/TrkSurfaces
-                          Tracking/TrkVertexFitter/TrkVertexFitterInterfaces
-                          Tracking/TrkEvent/VxSecVertex
-                          Event/EventPrimitives
-                          Generators/AtlasHepMC )
-
-# External dependencies
-
-# Component(s) in the package:
-atlas_add_component( InDetZVTOPVxFinder
-                     src/*.cxx
-                     src/components/*.cxx
-                     INCLUDE_DIRS 
-                     LINK_LIBRARIES AtlasHepMCLib AthenaBaseComps GaudiKernel InDetRecToolInterfaces VxVertex Particle TrkParticleBase TrkParameters xAODTracking AthContainers TrkExInterfaces TrkSurfaces TrkVertexFitterInterfaces VxSecVertex EventPrimitives )
-
-# Install files from the package:
-atlas_install_headers( InDetZVTOPVxFinder )
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ATLAS_CHECK_THREAD_SAFETY b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ATLAS_CHECK_THREAD_SAFETY
deleted file mode 100644
index 2e30389b16e2f7cd3e3f0f44aeada47f09c3e2cc..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ATLAS_CHECK_THREAD_SAFETY
+++ /dev/null
@@ -1 +0,0 @@
-InnerDetector/InDetRecTools/InDetZVTOPVxFinder
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/IZVTOP_AmbiguitySolver.h b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/IZVTOP_AmbiguitySolver.h
deleted file mode 100755
index 0741b97fbcacbab5a0bc4c63d07f0cdfe1afd019..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/IZVTOP_AmbiguitySolver.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// IZVTOP_AmbiguitySolver.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-#ifndef IINDETZVTOP_AMBIGUITYSOLVER_H
-#define IINDETZVTOP_AMBIGUITYSOLVER_H
-
-#include "GaudiKernel/IAlgTool.h"
-//xAOD includes --David S.
-#include "xAODTracking/Vertex.h" //typedef
-#include <vector>
-
-
-namespace InDet 
-{
-
-  class IZVTOP_AmbiguitySolver : virtual public IAlgTool {
-  public:
-    DeclareInterfaceID (IZVTOP_AmbiguitySolver, 1, 0);
-
-    // enter declaration of your interface-defining member functions here
-    virtual std::vector< xAOD::Vertex* > solveAmbiguities(std::vector< xAOD::Vertex* > VertexContainer) const = 0;
-  };
-
-} // end of namespace
-
-#endif 
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/IZVTOP_SimpleVtxProbCalc.h b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/IZVTOP_SimpleVtxProbCalc.h
deleted file mode 100755
index 7e6a281a4754a2677ac1018546f71392cd96e4b5..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/IZVTOP_SimpleVtxProbCalc.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// IZVTOP_SimpleVtxProbCalc.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-#ifndef IINDETZVTOP_SIMPLEVTXPROBCALC_H
-#define IINDETZVTOP_SIMPLEVTXPROBCALC_H
-
-#include "GaudiKernel/IAlgTool.h"
-
-
-namespace InDet 
-{
-
-
-  class IZVTOP_SimpleVtxProbCalc : virtual public IAlgTool {
-  public:
-    DeclareInterfaceID (IZVTOP_SimpleVtxProbCalc, 1, 0);
-
-    // enter declaration of your interface-defining member functions here
-    virtual double calcVtxProb(double & trk_func_sum, double & trk_func_sum2) const = 0;
-  };
-
-} // end of namespace
-
-#endif 
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/IZVTOP_SpatialPointFinder.h b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/IZVTOP_SpatialPointFinder.h
deleted file mode 100755
index 42a35988ea25ebc531491759126a96cdecdc84c6..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/IZVTOP_SpatialPointFinder.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// IZVTOP_SpatialPointFinder.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-#ifndef IINDETZVTOP_SPATIALPOINTFINDER_H
-#define IINDETZVTOP_SPATIALPOINTFINDER_H
-
-#include "GaudiKernel/IAlgTool.h"
-#include "TrkParameters/TrackParameters.h"
-
-namespace Rec {
-  class TrackParticle;
-}
-namespace Trk {
-  class Track;
-  class TrackParticleBase;
-  class RecVertex;
-  class Vertex;
-  //class TrackParameters;
-}
-namespace InDet 
-{
-
-
-  class IZVTOP_SpatialPointFinder : virtual public IAlgTool {
-  public:
-    DeclareInterfaceID(IZVTOP_SpatialPointFinder, 1, 0);
-
-    // declaration of interface-defining member functions
-    virtual Trk::Vertex* findSpatialPoint(const Trk::Track* trk_1, const Trk::Track* trk_2) const = 0;
-    virtual Trk::Vertex* findSpatialPoint(const Rec::TrackParticle* trk_1, const Rec::TrackParticle* trk_2) const = 0;
-    virtual Trk::Vertex* findSpatialPoint(const Trk::TrackParticleBase* trk_1, const Trk::TrackParticleBase* trk_2) const = 0;
-    virtual Trk::Vertex* findSpatialPoint(const Trk::RecVertex vtx, const Trk::Track* trk_1) const = 0;
-    virtual Trk::Vertex* findSpatialPoint(const Trk::RecVertex vtx, const Rec::TrackParticle* trk_1) const = 0;
-    virtual Trk::Vertex* findSpatialPoint(const Trk::RecVertex vtx, const Trk::TrackParticleBase* trk_1) const = 0;
-    virtual Trk::Vertex* findSpatialPoint(const Trk::TrackParameters* perigee_1, const Trk::TrackParameters* perigee_2) const = 0;
-    virtual Trk::Vertex* findSpatialPoint(const Trk::RecVertex vtx, const Trk::TrackParameters* perigee_1) const = 0;
-  };
-
-} // end of namespace
-
-#endif 
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/IZVTOP_TrkProbTubeCalc.h b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/IZVTOP_TrkProbTubeCalc.h
deleted file mode 100755
index 826fcec22c477f485e5423ac19f8e68b1fbb82cd..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/IZVTOP_TrkProbTubeCalc.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// IZVTOP_TrkProbTubeCalc.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-#ifndef IINDETZVTOP_TRKPROBTUBECALC_H
-#define IINDETZVTOP_TRKPROBTUBECALC_H
-
-#include "GaudiKernel/IAlgTool.h"
-#include "TrkParameters/TrackParameters.h"
-
-namespace Trk
-{
-  class Track;
-  class RecVertex;
-  class Vertex;
-  class TrackParticleBase;
-}
-
-namespace Rec {
-  class TrackParticle;
-}
-namespace InDet 
-{
-
-
-  class IZVTOP_TrkProbTubeCalc : virtual public IAlgTool {
-  public:
-    DeclareInterfaceID (IZVTOP_TrkProbTubeCalc, 1, 0);
-
-    // declaration of interface-defining member functions
-    //trk
-    virtual double calcProbTube(const Trk::Track& trk, Trk::Vertex& vec) const = 0;
-    virtual double calcProbTube(const Rec::TrackParticle& trk, Trk::Vertex& vec) const = 0;
-    virtual double calcProbTube(const Trk::TrackParticleBase& trk, Trk::Vertex& vec) const = 0;
-    virtual double calcProbTube(const Trk::Perigee* trk, Trk::Vertex& vec) const = 0;
-    //beam spot
-    virtual double calcProbTube(const Trk::RecVertex& vtx, Trk::Vertex& vec) const = 0;
-
-  };
-
-} // end of namespace
-
-#endif 
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_AmbiguitySolver.h b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_AmbiguitySolver.h
deleted file mode 100755
index 76a78069cf221cd473c9e393fee60821ac04b088..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_AmbiguitySolver.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// ZVTOP_AmbiguitySolver.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#ifndef INDETZVTOP_AMBIGUITYSOLVER_H
-#define INDETZVTOP_AMBIGUITYSOLVER_H
-
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "GaudiKernel/ToolHandle.h"
-#include "InDetZVTOPVxFinder/IZVTOP_AmbiguitySolver.h"
-namespace Trk
-{
-  //class VxCandidate; --David S.
-  class Track;
-}
-namespace InDet 
-{
-
-  class IZVTOP_TrkProbTubeCalc;
-  class IZVTOP_SimpleVtxProbCalc;
-
-  /** @class ZVTOP_AmbiguitySolver 
-
-      This is for the Doxygen-Documentation.  
-      Please delete these lines and fill in information about
-      the Algorithm!
-      Please precede every member function declaration with a
-      short Doxygen comment stating the purpose of this function.
-      
-      @author  Tatjana Lenz <tatjana.lenz@cern.ch>
-  */  
-
-  class ZVTOP_AmbiguitySolver : public extends<AthAlgTool, IZVTOP_AmbiguitySolver>
-    {
-    public:
-      ZVTOP_AmbiguitySolver(const std::string&,const std::string&,const IInterface*);
-
-       /** default destructor */
-      virtual ~ZVTOP_AmbiguitySolver ();
-      
-       /** standard Athena-Algorithm method */
-      virtual StatusCode initialize() override;
-       /** standard Athena-Algorithm method */
-      virtual StatusCode finalize  () override;
-      //std::vector<Trk::VxCandidate*> solveAmbiguities(std::vector<Trk::VxCandidate*> VxContainer); --David S.
-      virtual std::vector< xAOD::Vertex* > solveAmbiguities(std::vector< xAOD::Vertex* > VertexContainer) const override;
-      
-    private:
-
-      ToolHandle <InDet::IZVTOP_TrkProbTubeCalc>	m_TrkProbTubeCalc;
-      ToolHandle <InDet::IZVTOP_SimpleVtxProbCalc>	m_VtxProbCalc;
-
-      
-    }; 
-} // end of namespace
-
-#endif 
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_SecVtxTool.h b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_SecVtxTool.h
deleted file mode 100644
index 9206530340e5bb4fc1731e852b10fddf5648e504..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_SecVtxTool.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// ZVTOP_Tool.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#ifndef INDETZVTOP_SECVTXTOOL_H
-#define INDETZVTOP_SECVTXTOOL_H
-
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "GaudiKernel/ToolHandle.h"
-#include "InDetRecToolInterfaces/ISecVertexInJetFinder.h"
-
-/* Forward declarations */
-namespace Trk
-{
-  class Track;
-  class VxSecVertexInfo;
-  class RecVertex;
-  class TrackParticleBase;
-  class IVertexFitter;
-}
-namespace InDet 
-{
-    class ISecVertexInJetFinder;
-    class IZVTOP_SpatialPointFinder;
-    class IZVTOP_TrkProbTubeCalc;
-    class IZVTOP_SimpleVtxProbCalc;
-    class IZVTOP_AmbiguitySolver;
-    class ZVTOP_TrkPartBaseVertexState;
-    class ZVTOP_VertexState;
-
-  /** @class ZVTOP_Tool 
-
-      ---Topological Vertex Finder Tool ---
-      This tool reconstructs a set of topological vertices each 
-      associated with an independent subset of the charged tracks.
-      Vertices are reconstructed by associating tracks with 3D spatial regions
-      according to the vertex probability function which is based on the trajectories
-      and position resolution of the tracks.
-      Docu: "A Topological Vertex Reconstruction Algorithm for Hadronic Jets" 
-            by David J. Jackson, SLAC-PUB-7215, December 1996 
-
-      Following properties can be set/changed via jobOptions:
- 
-      ---Input: TrackCollection
-      - \c TrackParticleName: The name of the StoreGate input container from
-      which the TrackParticle are read. The default is "???", the container
-      from the legacy converters/ambiguity processor.
-      
-      ---Output: VxContainer
-      - \c VxCollectionOutputName: The name of the StoreGate container where the fit
-      results are put. default is "VxCollection".
-
-      ---Vertex Fitter: Billoir FullVertexFitter
-      - \c FitRoutine: The routine which should be used for the fitting. The
-      default is "FullVertexFitter".
-      
-
-      
-      @author  Tatjana Lenz <tatjana.lenz@NOSPAMcern.ch>
-  */  
-  class ZVTOP_SecVtxTool : virtual public ISecVertexInJetFinder, public AthAlgTool
-    {
-    public:
-      ZVTOP_SecVtxTool(const std::string&,const std::string&,const IInterface*);
-
-       /** default destructor */
-      virtual ~ZVTOP_SecVtxTool ();
-      
-       /** standard Athena-Algorithm method */
-      virtual StatusCode initialize();
-       /** standard Athena-Algorithm method */
-      virtual StatusCode finalize  ();
- 
-     virtual Trk::VxSecVertexInfo* findSecVertex(const Trk::RecVertex & primaryVertex,const TLorentzVector & jetMomentum,const std::vector<const Trk::TrackParticleBase*> & inputTracks) const;
-
-     //Added purely to satisfy new inheritance in ISecVertexInJetFinder, not yet implemented --David S.
-     virtual Trk::VxSecVertexInfo* findSecVertex(const xAOD::Vertex & primaryVertex, const TLorentzVector & jetMomentum,const std::vector<const xAOD::IParticle*> & inputTracks) const;
-
-     virtual Trk::VxSecVertexInfo* findSecVertex(const Trk::RecVertex & primaryVertex,const TLorentzVector & jetMomentum,const std::vector<const Trk::Track*> & inputTracks) const;
-
-    private:
-      
-      ToolHandle <Trk::IVertexFitter>					m_iVertexFitter;
-      ToolHandle <InDet::IZVTOP_SpatialPointFinder>	m_iSpatialPointFinder;
-      ToolHandle <InDet::IZVTOP_TrkProbTubeCalc>	m_iTrkProbTubeCalc;
-      ToolHandle <InDet::IZVTOP_SimpleVtxProbCalc>	m_iVtxProbCalc;
-      ToolHandle <InDet::IZVTOP_AmbiguitySolver>	m_iAmbiguitySolver;
-      double										m_resolvingCut;
-      double										m_resolvingStep;
-      double										m_vtxProb_cut;
-      double										m_trk_chi2_cut;
-    }; 
-} // end of namespace
-
-#endif 
- 
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_SimpleVtxProbCalc.h b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_SimpleVtxProbCalc.h
deleted file mode 100755
index 50e0fa05bc24aa3c129a63309405d07d6ca98753..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_SimpleVtxProbCalc.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// ZVTOP_SimpleVtxProbCalc.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#ifndef INDETZVTOP_SIMPLEVTXPROBCALC_H
-#define INDETZVTOP_SIMPLEVTXPROBCALC_H
-
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "InDetZVTOPVxFinder/IZVTOP_SimpleVtxProbCalc.h"
-
-
-namespace InDet 
-{
-
-  /** @class ZVTOP_SimpleVtxProbCalc 
-      
-      @author  Tatjana Lenz <tatjana.lenz@cern.ch>
-  */  
-
-  class ZVTOP_SimpleVtxProbCalc : public extends<AthAlgTool, IZVTOP_SimpleVtxProbCalc>
-    {
-    public:
-      ZVTOP_SimpleVtxProbCalc(const std::string&,const std::string&,const IInterface*);
-
-       /** default destructor */
-      virtual ~ZVTOP_SimpleVtxProbCalc ();
-      
-       /** standard Athena-Algorithm method */
-      virtual StatusCode initialize() override;
-       /** standard Athena-Algorithm method */
-      virtual StatusCode finalize  () override;
-      
-      virtual double calcVtxProb(double & trk_func_sum, double & trk_func_sum2) const override;
-    }; 
-} // end of namespace
-
-#endif 
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_SlowSpatialPointFinder.h b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_SlowSpatialPointFinder.h
deleted file mode 100644
index eb7541f7423cf5653a76d2581effaf86e3595407..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_SlowSpatialPointFinder.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// ZVTOP_SlowSpatialPointFinder.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#ifndef INDETZVTOP_SLOWSPATIALPOINTFINDER_H
-#define INDETZVTOP_SLOWSPATIALPOINTFINDER_H
-
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "InDetZVTOPVxFinder/IZVTOP_SpatialPointFinder.h"
-#include "GaudiKernel/ToolHandle.h"
-#include "TrkParameters/TrackParameters.h"
-namespace Trk
-{
-  class Track;
-  class RecVertex;
-  class TrackParticleBase;
-  class IVertexLinearizedTrackFactory;
-  class Vertex;
-}
-
-namespace Rec 
-{
-  class TrackParticle;
-}
-
-namespace InDet 
-{
-
-  /** @class ZVTOP_SlowSpatialPointFinder 
-
-
-      HelperClass for Topological Vertex Finder -ZVTOP-
-      Calculates the spatial point, which define the region of interest,
-      the region where we later look for the maxima of the vertex probability
-      function. Since at least two of the tracks (or RecVertex and Trk::Track) 
-      must contribute to a maximum in the vertex probability function, 
-      we calculate for each track pair the spatial point.
-      The found spatial point is rejected if chi² of this point is larger as chi²_cut.
-      
-      @author  Tatjana Lenz <tatjana.lenz@cern.ch>
-  */  
-
-  class ZVTOP_SlowSpatialPointFinder : public extends<AthAlgTool, IZVTOP_SpatialPointFinder>
-    {
-    public:
-      ZVTOP_SlowSpatialPointFinder(const std::string&,const std::string&,const IInterface*);
-
-       /** default destructor */
-      virtual ~ZVTOP_SlowSpatialPointFinder ();
-      
-       /** standard Athena-Algorithm method */
-      virtual StatusCode initialize() override;
-       /** standard Athena-Algorithm method */
-      virtual StatusCode finalize  () override;
-
-      virtual Trk::Vertex* findSpatialPoint(const Trk::Track* trk_1, const Trk::Track* trk_2) const override;
-      virtual Trk::Vertex* findSpatialPoint(const Trk::RecVertex vtx, const Trk::Track* trk_1) const override;
-      virtual Trk::Vertex* findSpatialPoint(const Rec::TrackParticle* trk_1, const Rec::TrackParticle* trk_2) const override;
-      virtual Trk::Vertex* findSpatialPoint(const Trk::RecVertex vtx, const Rec::TrackParticle* trk_1) const override;
-      virtual Trk::Vertex* findSpatialPoint(const Trk::TrackParticleBase* trk_1, const Trk::TrackParticleBase* trk_2) const override;
-      virtual Trk::Vertex* findSpatialPoint(const Trk::RecVertex vtx, const Trk::TrackParticleBase* trk_1) const override;
-      virtual Trk::Vertex* findSpatialPoint(const Trk::TrackParameters* perigee_1, const Trk::TrackParameters* perigee_2) const override;
-      virtual Trk::Vertex* findSpatialPoint(const Trk::RecVertex vtx, const Trk::TrackParameters* perigee_1) const override;
-
-    private:
-      
-    	ToolHandle< Trk::IVertexLinearizedTrackFactory > m_linFactory;
-      double				m_chi2;
-      
-    }; 
-} // end of namespace
-
-#endif 
- 
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_SpatialPointFinder.h b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_SpatialPointFinder.h
deleted file mode 100755
index e54ad926fdc58303ca115e9d84061385263c7b31..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_SpatialPointFinder.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// ZVTOP_SpatialPointFinder.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#ifndef INDETZVTOP_SPATIALPOINTFINDER_H
-#define INDETZVTOP_SPATIALPOINTFINDER_H
-
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "InDetZVTOPVxFinder/IZVTOP_SpatialPointFinder.h"
-
-namespace Trk
-{
-  class Track;
-  class RecVertex;
-  class TrackParticleBase;
-  class Vertex;
-}
-
-namespace Rec {
-  class TrackParticle;
-}
-
-namespace InDet 
-{
-
-  /** @class ZVTOP_SpatialPointFinder 
-
-
-      HelperClass for Topological Vertex Finder -ZVTOP-
-      Calculates the spatial point, which define the region of interest,
-      the region where we later look for the maxima of the vertex probability
-      function. Since at least two of the tracks (or RecVertex and Trk::Track) 
-      must contribute to a maximum in the vertex probability function, 
-      we calculate for each track pair the spatial point.
-      The found spatial point is rejected if chi² of this point is larger as chi²_cut.
-      
-      @author  Tatjana Lenz <tatjana.lenz@cern.ch>
-  */  
-
-  class ZVTOP_SpatialPointFinder : public extends<AthAlgTool, IZVTOP_SpatialPointFinder>
-    {
-    public:
-      ZVTOP_SpatialPointFinder(const std::string&,const std::string&,const IInterface*);
-
-       /** default destructor */
-      virtual ~ZVTOP_SpatialPointFinder ();
-      
-       /** standard Athena-Algorithm method */
-      virtual StatusCode initialize() override;
-       /** standard Athena-Algorithm method */
-      virtual StatusCode finalize  () override;
-
-      virtual Trk::Vertex* findSpatialPoint(const Trk::Track* trk_1, const Trk::Track* trk_2) const override;
-      virtual Trk::Vertex* findSpatialPoint(const Trk::RecVertex vtx, const Trk::Track* trk_1) const override;
-      virtual Trk::Vertex* findSpatialPoint(const Rec::TrackParticle* trk_1, const Rec::TrackParticle* trk_2) const override;
-      virtual Trk::Vertex* findSpatialPoint(const Trk::RecVertex vtx, const Rec::TrackParticle* trk_1) const override;
-      virtual Trk::Vertex* findSpatialPoint(const Trk::TrackParticleBase* trk_1, const Trk::TrackParticleBase* trk_2) const override;
-      virtual Trk::Vertex* findSpatialPoint(const Trk::RecVertex vtx, const Trk::TrackParticleBase* trk_1) const override;
-      virtual Trk::Vertex* findSpatialPoint(const Trk::TrackParameters* perigee_1, const Trk::TrackParameters* perigee_2) const override;
-      virtual Trk::Vertex* findSpatialPoint(const Trk::RecVertex vtx, const Trk::TrackParameters* perigee_1) const override;
-
-    private:
-      double				m_chi2;
-      
-    }; 
-} // end of namespace
-
-#endif 
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_Tool.h b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_Tool.h
deleted file mode 100755
index fea8df678cf6b4edcb806b35a273df70ad39b2e6..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_Tool.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// ZVTOP_Tool.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#ifndef INDETZVTOP_TOOL_H
-#define INDETZVTOP_TOOL_H
-
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "GaudiKernel/ToolHandle.h"
-#include "GaudiKernel/ServiceHandle.h"
-#include "InDetRecToolInterfaces/IVertexFinder.h"
-#include "xAODTracking/Vertex.h"
-#include "xAODTracking/TrackParticle.h"
-#include "xAODTracking/VertexContainer.h"
-#include "xAODTracking/TrackParticleContainer.h"
-
-class IBeamCondSvc;
-
-namespace Trk
-{
-  class IVertexFitter;
-}
-
-namespace InDet 
-{
-
-  class IZVTOP_SpatialPointFinder;
-  class IZVTOP_TrkProbTubeCalc;
-  class IZVTOP_SimpleVtxProbCalc;
-
-  /** @class ZVTOP_Tool 
-
-      ---Topological Vertex Finder Tool ---
-      This tool reconstructs a set of topological vertices each 
-      associated with an independent subset of the charged tracks.
-      Vertices are reconstructed by associating tracks with 3D spatial regions
-      according to the vertex probability function which is based on the trajectories
-      and position resolution of the tracks.
-      Docu: "A Topological Vertex Reconstruction Algorithm for Hadronic Jets" 
-            by David J. Jackson, SLAC-PUB-7215, December 1996 
-
-      Following properties can be set/changed via jobOptions:
- 
-      ---Input: TrackCollection
-      - \c TracksName: The name of the StoreGate input container from
-      which the tracks are read. The default is "Tracks", the container
-      from the legacy converters/ambiguity processor.
-      
-      ---Output: VxContainer
-      - \c VxCollectionOutputName: The name of the StoreGate container where the fit
-      results are put. default is "VxCollection".
-
-      ---Vertex Fitter: Billoir FullVertexFitter
-      - \c FitRoutine: The routine which should be used for the fitting. The
-      default is "FullVertexFitter".
-      
-
-      
-      @author  Tatjana Lenz <tatjana.lenz@cern.ch>
-  */  
-  class ZVTOP_Tool : virtual public IVertexFinder, public AthAlgTool
-    {
-    public:
-      ZVTOP_Tool(const std::string&,const std::string&,const IInterface*);
-
-       /** default destructor */
-      virtual ~ZVTOP_Tool ();
-      
-       /** standard Athena-Algorithm method */
-      virtual StatusCode initialize() override ;
-       /** standard Athena-Algorithm method */
-      virtual StatusCode finalize  () override ;
-      
-      using  IVertexFinder::findVertex;
-      virtual std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> findVertex(
-        const TrackCollection* trackTES) const override ;
-
-      virtual std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> findVertex(
-        const xAOD::TrackParticleContainer* trackParticles) const override;
-
-    private:
-      
-      ToolHandle <Trk::IVertexFitter>			m_iVertexFitter;
-      ToolHandle <InDet::IZVTOP_SpatialPointFinder>	m_iSpatialPointFinder;
-      ToolHandle <InDet::IZVTOP_TrkProbTubeCalc>	m_iTrkProbTubeCalc;
-      ToolHandle <InDet::IZVTOP_SimpleVtxProbCalc>	m_iVtxProbCalc;
-      
-      double						m_resolvingCut;
-      double						m_resolvingStep;
-      double						m_vtxProb_cut;
-      double						m_trk_chi2_cut;
-      ServiceHandle<IBeamCondSvc>                       m_iBeamCondSvc; //!< pointer to the beam condition service
-    };
-} // end of namespace
-
-#endif 
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_TrkPartBaseVertexState.h b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_TrkPartBaseVertexState.h
deleted file mode 100644
index f8ca7238b7274d6682bf820e0fac66436498634a..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_TrkPartBaseVertexState.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef IINDETZVTOP_TRKPARTBASEVERTEXSTATE_H
-#define IINDETZVTOP_TRKPARTBASEVERTEXSTATE_H 
-
-#include "VxVertex/Vertex.h"
-#include <vector>
-
-namespace Trk{
-  class TrackParticleBase;
-}
-
-/**
- *  ZVTOP_Tool helper class
- *  to store the full vertex/tracks & vtx_probability
- * information
- *  @author:      Tatjana Lenz <Tatjana.Lenz@cern.ch>
- */
-
-
-namespace InDet
-{
-
- class ZVTOP_TrkPartBaseVertexState
- {
-public:
-
-    /**Default Constructor */
-    ZVTOP_TrkPartBaseVertexState();
-    ZVTOP_TrkPartBaseVertexState(double& vtx_prob, Trk::Vertex& vertex, bool& beam_spot, std::vector<const Trk::TrackParticleBase*>& tracks);
-
-   /**virtual destructor of a class*/
-   virtual ~ZVTOP_TrkPartBaseVertexState();
-
-    /**Copy Constructor */
-    ZVTOP_TrkPartBaseVertexState (const ZVTOP_TrkPartBaseVertexState& vs); //copy-constructor
-    ZVTOP_TrkPartBaseVertexState &operator=  (const ZVTOP_TrkPartBaseVertexState &) = default;
-    
-    //(sroe): why do these return references to protected data?
-    double& vtx_prob(void);
-
-    Trk::Vertex& vertex(void);
-
-    bool& beam_spot(void);
-
-    std::vector<const Trk::TrackParticleBase*>&  tracks(void);
- 
-    inline void set_beam_spot(bool);
-
-protected:
-    //vertex probability
-    double m_vtx_prob;
-    //associated vertex 
-    Trk::Vertex m_vertex;
-    bool m_beam_spot;
-    // associated tracks
-    std::vector<const Trk::TrackParticleBase*> m_tracks; 
-};//end of class definitions
-
-inline double&  ZVTOP_TrkPartBaseVertexState::vtx_prob(void)
-  {
-    return m_vtx_prob;
-  }
-
-inline Trk::Vertex& ZVTOP_TrkPartBaseVertexState::vertex(void)
-  {
-    return m_vertex;
-  }
-
-inline std::vector<const Trk::TrackParticleBase*>& ZVTOP_TrkPartBaseVertexState::tracks(void)
-  {
-    return m_tracks;
-  }
-inline bool& ZVTOP_TrkPartBaseVertexState::beam_spot(void)
-  {
-    return m_beam_spot;
-  }
-inline void ZVTOP_TrkPartBaseVertexState::set_beam_spot(bool beam_spot)
-  {
-    m_beam_spot = beam_spot;
-  }
-}//end of namespace definitions
-
-#endif
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_TrkPartVertexState.h b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_TrkPartVertexState.h
deleted file mode 100644
index 748ab31f5f36e7549e47d83d7f0590af6a58f832..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_TrkPartVertexState.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef IINDETZVTOP_TRKPARTVERTEXSTATE_H
-#define IINDETZVTOP_TRKPARTVERTEXSTATE_H 
-
-#include "VxVertex/Vertex.h"
-#include <vector>
-namespace Rec{
-  class TrackParticle;
-}
-/**
- *  ZVTOP_Tool helper class
- *  to store the full vertex/tracks & vtx_probability
- * information
- *  @author:      Tatjana Lenz <Tatjana.Lenz@cern.ch>
- */
-
-
-namespace InDet
-{
-
- class ZVTOP_TrkPartVertexState
- {
-public:
-
-    /**Default Constructor */
-    ZVTOP_TrkPartVertexState();
-    ZVTOP_TrkPartVertexState(double& vtx_prob, Trk::Vertex& vertex, bool& IP, std::vector<const Rec::TrackParticle*>& tracks);
-
-   /**virtual destructor of a class*/
-   virtual ~ZVTOP_TrkPartVertexState();
-
-    /**Copy Constructor */
-    ZVTOP_TrkPartVertexState (const ZVTOP_TrkPartVertexState& vs); //copy-constructor
-    ZVTOP_TrkPartVertexState &operator=  (const ZVTOP_TrkPartVertexState &) = default;
-    
-    double& vtx_prob(void);
-
-    Trk::Vertex& vertex(void);
-
-    bool& IP(void);
-
-    std::vector<const Rec::TrackParticle*>&  tracks(void);
- 
-    inline void set_IP(bool);
-
-protected:
-    //vertex probability
-    double m_vtx_prob;
-    //associated vertex 
-    Trk::Vertex m_vertex;
-    bool m_IP;
-    // associated tracks
-    std::vector<const Rec::TrackParticle*> m_tracks; 
-};//end of class definitions
-
-inline double&  ZVTOP_TrkPartVertexState::vtx_prob(void)
-  {
-    return m_vtx_prob;
-  }
-
-inline Trk::Vertex& ZVTOP_TrkPartVertexState::vertex(void)
-  {
-    return m_vertex;
-  }
-
-inline std::vector<const Rec::TrackParticle*>& ZVTOP_TrkPartVertexState::tracks(void)
-  {
-    return m_tracks;
-  }
-inline bool& ZVTOP_TrkPartVertexState::IP(void)
-  {
-    return m_IP;
-  }
-inline void ZVTOP_TrkPartVertexState::set_IP(bool IP)
-  {
-    m_IP = IP;
-  }
-}//end of namespace definitions
-
-#endif
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_TrkProbTubeCalc.h b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_TrkProbTubeCalc.h
deleted file mode 100755
index 46c7f67a0a6586400b8e496664d9194323c02cbb..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_TrkProbTubeCalc.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// ZVTOP_TrkProbTubeCalc.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#ifndef INDETZVTOP_TRKPROBTUBECALC_H
-#define INDETZVTOP_TRKPROBTUBECALC_H
-
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "GaudiKernel/ToolHandle.h"
-#include "InDetZVTOPVxFinder/IZVTOP_TrkProbTubeCalc.h"
-#include "TrkTrack/Track.h"
-#include "VxVertex/RecVertex.h"
-#include"Particle/TrackParticle.h"
-namespace Trk
-{
-  class IExtrapolator;
-}
-namespace InDet 
-{
-
-  /** @class ZVTOP_TrkProbTubeCalc 
-
-      ZVTOP helper class, calculates the Gaussian probability
-      tube for the track trajectory.
-      
-      @author  Tatjana Lenz <tatjana.lenz@cern.ch>
-  */  
-
-  class ZVTOP_TrkProbTubeCalc : public extends<AthAlgTool, IZVTOP_TrkProbTubeCalc>
-    {
-    public:
-      ZVTOP_TrkProbTubeCalc(const std::string&,const std::string&,const IInterface*);
-
-       /** default destructor */
-      virtual ~ZVTOP_TrkProbTubeCalc ();
-      
-       /** standard Athena-Algorithm method */
-      virtual StatusCode initialize() override;
-       /** standard Athena-Algorithm method */
-      virtual StatusCode finalize  () override;
-      
-      virtual double calcProbTube(const Trk::Track& trk, Trk::Vertex& vec) const override;
-      virtual double calcProbTube(const Rec::TrackParticle& trk, Trk::Vertex& vec) const override;
-      virtual double calcProbTube(const Trk::TrackParticleBase& trk, Trk::Vertex& vec) const override;
-      virtual double calcProbTube(const Trk::Perigee* trk, Trk::Vertex& vec) const override;
-      virtual double calcProbTube(const Trk::RecVertex& vtx, Trk::Vertex& vec) const override;
-    private:
-      
-      /** member variables for algorithm properties: */
-     ToolHandle< Trk::IExtrapolator > m_extrapolator;
-      
-    }; 
-} // end of namespace
-
-#endif 
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_VertexState.h b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_VertexState.h
deleted file mode 100755
index 82733f11edd549b4fdf97a4c9399c4072b8517d8..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/InDetZVTOPVxFinder/ZVTOP_VertexState.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef IINDETZVTOP_VERTEXSTATE_H
-#define IINDETZVTOP_VERTEXSTATE_H 
-
-#include "VxVertex/Vertex.h"
-#include <vector>
-/**
- *  ZVTOP_Tool helper class
- *  to store the full vertex/tracks & vtx_probability
- * information
- *  @author:      Tatjana Lenz <Tatjana.Lenz@cern.ch>
- */
- 
- namespace Trk{
-  class Track;
- }
-
-
-namespace InDet
-{
-
- class ZVTOP_VertexState
- {
-public:
-
-    /**Default Constructor */
-    ZVTOP_VertexState();
-    ZVTOP_VertexState(double& vtx_prob, Trk::Vertex& vertex, bool& beam_spot, std::vector<const Trk::Track*>& tracks);
-
-   /**virtual destructor of a class*/
-   virtual ~ZVTOP_VertexState();
-
-    /**Copy Constructor */
-    ZVTOP_VertexState (const ZVTOP_VertexState& vs); //copy-constructor
-    ZVTOP_VertexState &operator=  (const ZVTOP_VertexState &)= default;
-    
-    double& vtx_prob(void);
-
-    Trk::Vertex& vertex(void);
-
-    bool& beam_spot(void);
-
-    std::vector<const Trk::Track*>&  tracks(void);
- 
-    inline void set_beam_spot(bool);
-
-protected:
-    //vertex probability
-    double m_vtx_prob;
-    //associated vertex 
-    Trk::Vertex m_vertex;
-    bool m_beam_spot;
-    // associated tracks
-    std::vector<const Trk::Track*> m_tracks; 
-};//end of class definitions
-
-inline double&  ZVTOP_VertexState::vtx_prob(void)
-  {
-    return m_vtx_prob;
-  }
-
-inline Trk::Vertex& ZVTOP_VertexState::vertex(void)
-  {
-    return m_vertex;
-  }
-
-inline std::vector<const Trk::Track*>& ZVTOP_VertexState::tracks(void)
-  {
-    return m_tracks;
-  }
-inline bool& ZVTOP_VertexState::beam_spot(void)
-  {
-    return m_beam_spot;
-  }
-inline void ZVTOP_VertexState::set_beam_spot(bool beam_spot)
-  {
-    m_beam_spot = beam_spot;
-  }
-}//end of namespace definitions
-
-#endif
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/doc/packagedoc.h b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/doc/packagedoc.h
deleted file mode 100644
index 21b0bb2c4dcfc2693babcc47f697992f1a619cff..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/doc/packagedoc.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/**
-@page InDetZVTOPVxFinder_page InDetZVTOPVxFinder Package
-
-Contains:
-- ZVTOP_AmbiguitySolver.cxx (dummy) <br>
-- ZVTOP_SimpleVtxProbCalc.cxx (helper class, calculates vtx probability at a given point) <br>
-- ZVTOP_SpatialPointFinder.cxx (helper class, seed finder for vertex candidates) <br>
-- ZVTOP_Tool.cxx (main tool) <br>
-- ZVTOP_TrkProbTubeCalc.cxx (helper class, calculates track probabilities at a given point) <br>
-- ZVTOP_VertexState.cxx (helper class) <br>
-
-Documentation: David J. Jackson, Nucl.Instrum.Meth.A388: 247-253, 1997
-
-@author Tatjana Lenz <tatjana.lenz@cern.ch>
-
-@section InDetZVTOPVxFinder_InDetZVTOPVxFinderIntro Introduction
-
-This AlgTool reconstructs a set of vertices and associated subset of the charged tracks, the association accords to a vertex probability function which is based on the trajectories and position resolution of the tracks. The track probability function, \f$ f_i \f$ is defined as a Gaussian tube around a track: the width is given by a track covariance (= error) matrix. The vertex probability function is \f$ \sum f_i - \frac{ \sum f_i^2}{\sum f_i} \f$. The job is to search for local maxima of the vertex probability function. So you have to calculate the vertex probability function at euch space point in detector. To reduce the number of spatial points, all possible combinations of two track pairs are build. For each pair the spatial point is calculated (see ZVTOP_SpatialPointFinder), all spatial points are candidates for a vertex. To reduce the number of vertex candidates the vertex candidate cluster are build. The tracks associated with each cluster are fitted, the vertex fitter can be set/changed via jobOptions, default Billoir FullFitter.
-On the fitted VxCandidate some quality cuts can be applied. The result is stored in a VxContainer. 
-
-
-
-*/
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_AmbiguitySolver.cxx b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_AmbiguitySolver.cxx
deleted file mode 100755
index 9c82d40b6f338aa86a6a8c871178bf523d794b7d..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_AmbiguitySolver.cxx
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// ZVTOP_AmbiguitySolver.cxx, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#include "InDetZVTOPVxFinder/ZVTOP_AmbiguitySolver.h"
-#include "InDetZVTOPVxFinder/IZVTOP_TrkProbTubeCalc.h"
-#include "InDetZVTOPVxFinder/IZVTOP_SimpleVtxProbCalc.h"
-#include "VxVertex/VxCandidate.h"
-#include "TrkTrack/Track.h"
-#include "TrkParameters/TrackParameters.h"
-#include "VxVertex/VxTrackAtVertex.h"
-#include <map>
-
-//================ Constructor =================================================
-
-InDet::ZVTOP_AmbiguitySolver::ZVTOP_AmbiguitySolver(const std::string& t,
-			  const std::string& n,
-			  const IInterface*  p )
-  :
-  base_class(t,n,p),
-  m_TrkProbTubeCalc("InDet::ZVTOP_TrkProbTubeCalc"),
-  m_VtxProbCalc("InDet::ZVTOP_VtxProbCalc")
-{
-  //  template for property decalration
-  declareProperty("TrkProbTubeCalcTool",m_TrkProbTubeCalc);
-  declareProperty("VtxProbCalcTool",m_VtxProbCalc);
-}
-
-//================ Destructor =================================================
-
-InDet::ZVTOP_AmbiguitySolver::~ZVTOP_AmbiguitySolver()
-{}
-
-
-//================ Initialisation =================================================
-
-StatusCode InDet::ZVTOP_AmbiguitySolver::initialize()
-{
-  //Gaussian Probability Tube for the Track Trajectory
-  ATH_CHECK( m_TrkProbTubeCalc.retrieve());
-  //Vertex Probability Function
-  ATH_CHECK( m_VtxProbCalc.retrieve() );
-  ATH_MSG_DEBUG( "initialize() successful ");
-  return StatusCode::SUCCESS;
-}
-
-std::vector<xAOD::Vertex*> InDet::ZVTOP_AmbiguitySolver::solveAmbiguities(std::vector<xAOD::Vertex*> VertexContainer) const
-{
-  std::vector<xAOD::Vertex*> newVertexContainer;
-  std::vector<xAOD::Vertex*>::iterator itr = VertexContainer.begin();
-  std::map<double, xAOD::Vertex*> vxprob_map;
-  double sum_TrkProbTube = 0.;
-  double sum2_TrkProbTube = 0.;
-  for (; itr != VertexContainer.end(); ++itr){
-    Amg::Vector3D pos = (*itr)->position();
-    Trk::Vertex vtx_pos(pos);
-    std::vector<Trk::VxTrackAtVertex> trksAtVtx = (*itr)->vxTrackAtVertex();
-    std::vector<Trk::VxTrackAtVertex>::iterator trk_itr = trksAtVtx.begin();
-    for (; trk_itr != trksAtVtx.end(); ++trk_itr ){
-      const Trk::Perigee*	perigee = dynamic_cast<const Trk::Perigee*>((*trk_itr).initialPerigee());
-      if (not perigee) continue;
-      double TrkProbTube = m_TrkProbTubeCalc->calcProbTube(perigee, vtx_pos);
-      sum_TrkProbTube  += TrkProbTube;
-      sum2_TrkProbTube += (TrkProbTube * TrkProbTube);
-    }
-    double vtx_prob = m_VtxProbCalc->calcVtxProb(sum_TrkProbTube, sum2_TrkProbTube);
-    vxprob_map.insert(std::map<double, xAOD::Vertex*>::value_type(vtx_prob,(*itr)));
-  }
-  
-  std::map<double, xAOD::Vertex*>::reverse_iterator mapItr = vxprob_map.rbegin();
-  std::map<double, xAOD::Vertex*> initial_perigee_pos_map;
-  for(; mapItr!=vxprob_map.rend(); ++mapItr){
-    xAOD::Vertex* vtx = (*mapItr).second;
-    std::vector<Trk::VxTrackAtVertex> trkAtVtx = vtx->vxTrackAtVertex();
-    std::vector<Trk::VxTrackAtVertex>::iterator trkAtVtx_Iter = trkAtVtx.begin();
-    for (; trkAtVtx_Iter!= trkAtVtx.end(); ++trkAtVtx_Iter){
-      const Trk::Perigee*	perigee = dynamic_cast<const Trk::Perigee*>((*trkAtVtx_Iter).initialPerigee());
-      if (not perigee) continue;
-      Amg::Vector3D pos = perigee->position();
-      initial_perigee_pos_map.insert(std::map<double, xAOD::Vertex*>::value_type(pos.mag(),vtx));
-    }
-  }
-  mapItr = vxprob_map.rbegin();
-  for (; mapItr!= vxprob_map.rend(); ++mapItr){
-    xAOD::Vertex* vtx = (*mapItr).second;
-    std::vector<Trk::VxTrackAtVertex> trkAtVtx = vtx->vxTrackAtVertex();
-    std::vector<Trk::VxTrackAtVertex>::iterator trkAtVtx_Iter = trkAtVtx.begin();
-    for (; trkAtVtx_Iter!= trkAtVtx.end(); ++trkAtVtx_Iter){
-      const Trk::Perigee*	perigee = dynamic_cast<const Trk::Perigee*>((*trkAtVtx_Iter).initialPerigee());
-      if (not perigee) continue;
-      double pos_mag = perigee->position().mag();
-      std::map<double, xAOD::Vertex*>::iterator pos_magItr = initial_perigee_pos_map.find(pos_mag);
-      if (pos_magItr != initial_perigee_pos_map.end()) {
-        if (vtx != (*pos_magItr).second){
-          trkAtVtx.erase(trkAtVtx_Iter);
-          if (trkAtVtx_Iter == trkAtVtx.end()) break;
-        }
-      }
-    }
-    if (trkAtVtx.size() > 1) { 
-      newVertexContainer.push_back(vtx);
-    }
-  }
-  return newVertexContainer;
-}
-//================ Finalisation =================================================
-
-StatusCode InDet::ZVTOP_AmbiguitySolver::finalize()
-{
-  return StatusCode::SUCCESS;
-}
-
-//============================================================================================
-
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_SecVtxTool.cxx b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_SecVtxTool.cxx
deleted file mode 100644
index ada2747a6e096222fef76bddade3c588a86307e4..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_SecVtxTool.cxx
+++ /dev/null
@@ -1,689 +0,0 @@
-/*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// ZVTOP_Tool.cxx, (c) ATLAS Detector software
-// begin   : 30-10-2006
-// authors : Tatjana Lenz
-// email   : tatjana.lenz@cern.ch
-// changes :
-///////////////////////////////////////////////////////////////////
-
-#include "InDetZVTOPVxFinder/ZVTOP_SecVtxTool.h"
-#include "TrkVertexFitterInterfaces/IVertexFitter.h"
-#include "InDetZVTOPVxFinder/IZVTOP_SpatialPointFinder.h"
-#include "InDetZVTOPVxFinder/IZVTOP_TrkProbTubeCalc.h"
-#include "InDetZVTOPVxFinder/IZVTOP_SimpleVtxProbCalc.h"
-#include "InDetZVTOPVxFinder/IZVTOP_AmbiguitySolver.h"
-#include "InDetZVTOPVxFinder/ZVTOP_TrkPartBaseVertexState.h"
-#include "InDetZVTOPVxFinder/ZVTOP_VertexState.h"
-#include "VxVertex/Vertex.h"
-#include "VxVertex/VxTrackAtVertex.h"
-#include "TrkParticleBase/TrackParticleBaseCollection.h"
-#include "TrkTrack/Track.h"
-#include "VxSecVertex/VxSecVertexInfo.h"
-#include <map>
-#include <utility>
-//================ Constructor =================================================
-
-InDet::ZVTOP_SecVtxTool::ZVTOP_SecVtxTool(const std::string& t,
-			  const std::string& n,
-			  const IInterface*  p )
-  :
-  AthAlgTool(t,n,p),
-  m_iVertexFitter("Trk::FullVertexFitter"),
-  m_iSpatialPointFinder("InDet::SpatialPointFinder"),
-  m_iTrkProbTubeCalc("InDet::TrkProbTubeCalc"),
-  m_iVtxProbCalc("InDet::VtxProbCalc"),
-	m_iAmbiguitySolver("InDet::ZVTOP_AmbiguitySolver")
-{
-  //  template for property declaration
-  declareInterface<ISecVertexInJetFinder>(this);
-  declareProperty("VertexFitterTool",m_iVertexFitter);
-  declareProperty("SpatialPointFinderTool",m_iSpatialPointFinder);
-  declareProperty("TrkProbTubeCalcTool",m_iTrkProbTubeCalc);
-  declareProperty("VtxProbCalcTool",m_iVtxProbCalc);
-  declareProperty("AmbiguitySolverTool",m_iAmbiguitySolver);
-  declareProperty("ResolvingCutValue", m_resolvingCut = 0.6);
-  declareProperty("ResolvingStepValue", m_resolvingStep = 0.3);
-  declareProperty("VtxProbCut", m_vtxProb_cut = 0.00001);
-  declareProperty("MaxChi2PerTrack", m_trk_chi2_cut = 5.);
-}
-
-//================ Destructor =================================================
-
-InDet::ZVTOP_SecVtxTool::~ZVTOP_SecVtxTool(){}
-
-//================ Initialisation =================================================
-
-StatusCode InDet::ZVTOP_SecVtxTool::initialize()
-{
-  StatusCode sc = AlgTool::initialize();
-
-  msg (MSG::INFO) << name() << " initialize()" << endmsg;
-  if (sc.isFailure()) return sc;
-
-  /* Retrieve Tools*/
-  //SpatialPointFinder
-  if ( m_iSpatialPointFinder.retrieve().isFailure() ) {
-      msg (MSG::FATAL) << "Failed to retrieve tool " << m_iSpatialPointFinder << endmsg;
-      return StatusCode::FAILURE;
-  } msg (MSG::INFO) << "Retrieved tool " << m_iSpatialPointFinder << endmsg;
-
-  //Gaussian Probability Tube for the Track Trajectory
-  if ( m_iTrkProbTubeCalc.retrieve().isFailure() ) {
-      msg (MSG::FATAL) << "Failed to retrieve tool " << m_iTrkProbTubeCalc<< endmsg;
-      return StatusCode::FAILURE;
-  } msg (MSG::INFO) << "Retrieved tool " << m_iTrkProbTubeCalc << endmsg;
-
-  //Vertex Probability Function
-  if ( m_iVtxProbCalc.retrieve().isFailure() ) {
-      msg (MSG::FATAL) << "Failed to retrieve tool " << m_iVtxProbCalc<< endmsg;
-      return StatusCode::FAILURE;
-  } msg (MSG::INFO) << "Retrieved tool " << m_iVtxProbCalc << endmsg;
-
-  //VxFitter
-  if ( m_iVertexFitter.retrieve().isFailure() ) {
-      msg (MSG::FATAL) << "Failed to retrieve tool " << m_iVertexFitter << endmsg;
-      return StatusCode::FAILURE;
-  } msg (MSG::INFO) << "Retrieved tool " << m_iVertexFitter << endmsg;
-
-  if ( m_iAmbiguitySolver.retrieve().isFailure() ) {
-      msg (MSG::FATAL) << "Failed to retrieve tool " << m_iAmbiguitySolver << endmsg;
-      return StatusCode::FAILURE;
-  } msg (MSG::INFO) << "Retrieved tool " << m_iAmbiguitySolver << endmsg;
-
-  msg (MSG::INFO) << "initialize() successful in " << name() << endmsg;
-  return StatusCode::SUCCESS;
-}
-
-//================ Finalisation =================================================================
-
-StatusCode InDet::ZVTOP_SecVtxTool::finalize()
-{
-  StatusCode sc = AlgTool::finalize();
-  return sc;
-}
-
-//===========================================================================================
-// TrackParticle
-//===========================================================================================
-Trk::VxSecVertexInfo* InDet::ZVTOP_SecVtxTool::findSecVertex(const Trk::RecVertex & primaryVertex,
-								const TLorentzVector & jetMomentum,
-								const std::vector<const Trk::TrackParticleBase*> & inputTracks) const
-{
-  //std::vector<Trk::VxCandidate*> secVertices; --David S.
-  std::vector<xAOD::Vertex*> secVertices;
-  //std::vector<Trk::VxCandidate*> new_secVertices(0); --David S.
-  std::vector<xAOD::Vertex*> new_secVertices(0);
-  //if (msgLvl(MSG::DEBUG)) msg () << "jet momentum Et s= "<<jetMomentum.et() <<  endmsg; --David S.
-  if (msgLvl(MSG::DEBUG)) msg () << "jet momentum Et s= "<<jetMomentum.Et() <<  endmsg;
-  if (!inputTracks.empty()) {
-    //some variables
-    typedef std::vector<const Trk::TrackParticleBase*>::const_iterator TrkPartVecIter;
-    std::vector<const Trk::TrackParticleBase*> trkColl; // the collection of tracks, which are assigned to one spatial point
-    std::vector<InDet::ZVTOP_TrkPartBaseVertexState*> vtxState_org;// vector of tracks and vertices, tracks can be assigned to more than one vertex, these ambiguities will be resolved later
-    std::multimap<double, InDet::ZVTOP_TrkPartBaseVertexState*> vtxProb_map;
-    //---------------------------------------------------------------------------//  
-    //-------step1: find spatial points & calculate vtx probabilities-------//
-    //--------------------------------------------------------------------------//
-    std::vector< std::vector<InDet::ZVTOP_TrkPartBaseVertexState*> > vertex_objects; //vector of vtx candidate & track collection pairs
-    if (msgLvl(MSG::DEBUG)) msg () << "step ONE search for the spatial points, number of tracks = "<<inputTracks.size() <<  endmsg;
-    for (TrkPartVecIter itr_1  = inputTracks.begin(); itr_1 != inputTracks.end()-1; itr_1++)
-  {
-    double sum_TrkProbTube = 0.;
-    double sum2_TrkProbTube = 0.;
-    double vtxProb = 0.;
-    // trk-trk combination
-    for (TrkPartVecIter itr_2 = itr_1+1; itr_2 != inputTracks.end(); itr_2++)
-    {
-      Trk::Vertex* spatialPoint;
-      spatialPoint = m_iSpatialPointFinder->findSpatialPoint((*itr_1),(*itr_2));
-      if (spatialPoint != nullptr) 
-      {
-	double TrkProbTube_1 = m_iTrkProbTubeCalc->calcProbTube(*(*itr_1),*spatialPoint);
-	double TrkProbTube_2 = m_iTrkProbTubeCalc->calcProbTube(*(*itr_2),*spatialPoint);
-	sum_TrkProbTube = TrkProbTube_1 + TrkProbTube_2;
-	sum2_TrkProbTube = pow(TrkProbTube_1,2.) + pow(TrkProbTube_2,2.);
-	if (sum_TrkProbTube != 0. )
-	  { 
-            vtxProb = m_iVtxProbCalc->calcVtxProb(sum_TrkProbTube, sum2_TrkProbTube);
-            trkColl.push_back((*itr_1));
-            trkColl.push_back((*itr_2));
-            bool IP = false;
-            if (vtxProb > m_vtxProb_cut) vtxState_org.push_back(new InDet::ZVTOP_TrkPartBaseVertexState(vtxProb, *spatialPoint, IP, trkColl ));
-            trkColl.clear();
-	  }
-      }
-      delete spatialPoint;
-    }
-    //trk-IP combination
-    Trk::Vertex* spatialPoint = nullptr;
-    spatialPoint = m_iSpatialPointFinder->findSpatialPoint(primaryVertex,(*itr_1));
-    if (spatialPoint != nullptr) 
-    {
-      double IPprobTube = m_iTrkProbTubeCalc->calcProbTube(primaryVertex,*spatialPoint);
-      double TrkProbTube = m_iTrkProbTubeCalc->calcProbTube(*(*itr_1),*spatialPoint);
-      sum_TrkProbTube = IPprobTube + TrkProbTube;
-      sum2_TrkProbTube = pow(TrkProbTube,2.) + pow(IPprobTube,2.);
-      if (sum_TrkProbTube != 0. ) 
-      {
-         vtxProb = m_iVtxProbCalc->calcVtxProb(sum_TrkProbTube, sum2_TrkProbTube);
-         trkColl.push_back((*itr_1));
-         bool IP = true;
-         if (vtxProb > m_vtxProb_cut) vtxState_org.push_back(new InDet::ZVTOP_TrkPartBaseVertexState(vtxProb, *spatialPoint, IP, trkColl ));
-         trkColl.clear();
-      }
-    }
-    delete spatialPoint;
-  }
-  if (msgLvl(MSG::DEBUG)) msg () << " number of spatial points = "<<vtxState_org.size()<<endmsg;
-  //reduce the spatial point collection
-  typedef std::vector<InDet::ZVTOP_TrkPartBaseVertexState*>::iterator Sp_Iter;
-  std::vector< InDet::ZVTOP_TrkPartBaseVertexState*> vtxState;
-  for (Sp_Iter itr1 = vtxState_org.begin(); itr1 != vtxState_org.end(); itr1++)
-  {
-
-    if (vtxState.empty()) vtxState.push_back(*itr1);
-    else 
-      {
-	Trk::Vertex vtx_new = (*itr1)->vertex();
-	bool can_be_resolved = false;
-	for (Sp_Iter itr2 = vtxState.begin(); itr2 != vtxState.end(); itr2++)
-	  {
-	    Trk::Vertex vtx_in = (*itr2)->vertex();
-            double r_diff = sqrt(pow(vtx_new.position().x(),2.) + pow(vtx_new.position().y(),2.)) - sqrt(pow(vtx_in.position().x(),2.) + pow(vtx_in.position().y(),2.));
-            double z_diff = vtx_new.position().z() - vtx_in.position().z();
-            if (fabs(r_diff) > 0.001 && fabs(z_diff) > 0.001 && r_diff != 0. && z_diff != 0.) can_be_resolved = true;
-            else 
-	      {
-                for (unsigned int trk_itr = 0; trk_itr < (*itr1)->tracks().size(); trk_itr++) (*itr2)->tracks().push_back((*itr1)->tracks()[trk_itr]); 
-                can_be_resolved = false;
-                break;
-	      }
-	  }
-	if (can_be_resolved)  vtxState.push_back(*itr1);
-      }
-  }
-  for (Sp_Iter itr_sort = vtxState.begin();  itr_sort!= vtxState.end(); itr_sort++)  vtxProb_map.insert(std::multimap<double, InDet::ZVTOP_TrkPartBaseVertexState*>::value_type((*itr_sort)->vtx_prob(), *itr_sort));
-
-
-//-------------------------------------------------------------------------------//
-//----step2: vertex clustering, aim: to cluster all vertices together, ----//
-//----which can not be resolved. The found vertex seeds and ---------//
-//----associated tracks are taken as an input for the vertex fit. --------//
-//------------------------------------------------------------------------------//
-
-  if (!vtxState.empty() ){
-    if (msgLvl(MSG::DEBUG)) msg () << " step TWO vertex clustering, number of reduced vertices = "<<vtxState.size()<< endmsg;
-    //sort the vtxState collection, starting with a highest vtx probability
-    std::vector<InDet::ZVTOP_TrkPartBaseVertexState*> vtxState_sorted;
-    std::multimap<double, InDet::ZVTOP_TrkPartBaseVertexState*>::reverse_iterator s= vtxProb_map.rbegin();
-    for (;  s!=vtxProb_map.rend();  s++)  {
-      InDet::ZVTOP_TrkPartBaseVertexState* vtx_state = (*s).second;
-      vtxState_sorted.push_back(vtx_state);
-    }
-    //store first element in the vertex_objects ---->vector<vector<VertexState>>
-    std::vector<InDet::ZVTOP_TrkPartBaseVertexState*> vtx_coll;
-    vtx_coll.push_back(*(vtxState_sorted.begin()));
-    vertex_objects.push_back(vtx_coll);//store first seed
-    std::vector< InDet::ZVTOP_TrkPartBaseVertexState*>  vtxState_new(vtxState_sorted); //copy of the vtxState_sorted
-    vtxState_new.erase(vtxState_new.begin()); // without first element
-    //loop over vtxState_sorted
-    for (Sp_Iter org_itr= vtxState_sorted.begin(); org_itr != vtxState_sorted.end(); org_itr++)
-    {
-      Trk::Vertex seed = (*org_itr)->vertex();
-      //found where the seed is already stored
-      bool vtx_is_stored = false;
-      unsigned int vertex_objectsPosition = 0; 
-      for (unsigned int vertex_objectsItr = 0; vertex_objectsItr!= vertex_objects.size(); vertex_objectsItr++)
-        {
-          //stored vertices in the line vertex_objectsItr
-          std::vector<InDet::ZVTOP_TrkPartBaseVertexState*> stored_vertices = vertex_objects[vertex_objectsItr];
-           //---->inner loop
-          for (unsigned int stored_vtx_itr = 0; stored_vtx_itr!= stored_vertices.size(); stored_vtx_itr++)
-          {
-	    Trk::Vertex storedVtx = stored_vertices[stored_vtx_itr]->vertex();
-	    double diff = ((*org_itr)->vertex().position().x() - storedVtx.position().x()) + ((*org_itr)->vertex().position().y() - storedVtx.position().y()) + ((*org_itr)->vertex().position().z() - storedVtx.position().z());
-	    if (fabs(diff) < 0.0001)
-              {
-		vertex_objectsPosition = vertex_objectsItr;
-		vtx_is_stored = true;
-		break; // break inner loop if found
-              }
-	  }
-	  if (vtx_is_stored) break; // break outer loop if found
-	}
-      if (!vtx_is_stored) {
-	//if not stored
-	std::vector<InDet::ZVTOP_TrkPartBaseVertexState*> new_vtx_coll;
-	new_vtx_coll.push_back(*org_itr);
-	vertex_objects.push_back(new_vtx_coll);
-	vertex_objectsPosition = vertex_objects.size() - 1;
-      }
-      for (Sp_Iter new_itr = vtxState_new.begin(); new_itr!= vtxState_new.end(); new_itr++)
-	{
-	  Trk::Vertex cand = (*new_itr)->vertex();
-	  //calculate the vtx prob function for this seed
-	  std::multimap<double, Trk::Vertex > vtx_prob_coll;
-	  vtx_prob_coll.insert(std::multimap<double, Trk::Vertex >::value_type((*new_itr)->vtx_prob(),(*new_itr)->vertex()));
-	  vtx_prob_coll.insert(std::multimap<double, Trk::Vertex >::value_type((*org_itr)->vtx_prob(),(*org_itr)->vertex()));
-	  for (double alpha = m_resolvingStep; alpha <1.; alpha += m_resolvingStep)
-	    {
-	      Trk::Vertex SP_line = Trk::Vertex((*org_itr)->vertex().position() + alpha*((*new_itr)->vertex().position() - (*org_itr)->vertex().position()));
-	      double sum_TrkProbTube = 0.;
-	      double sum2_TrkProbTube = 0.;
-	      for (TrkPartVecIter trk_itr = inputTracks.begin(); trk_itr != inputTracks.end(); trk_itr++)
-		{
-		  double TrkProbTube = 0.;
-		  TrkProbTube = m_iTrkProbTubeCalc->calcProbTube(*(*trk_itr),SP_line);
-		  sum_TrkProbTube += TrkProbTube;
-		  sum2_TrkProbTube += pow(TrkProbTube,2.);
-		}
-	      double IPprobTube = m_iTrkProbTubeCalc->calcProbTube(primaryVertex,SP_line);
-	      sum_TrkProbTube += IPprobTube;
-	      sum2_TrkProbTube += pow(IPprobTube,2.);
-	      double vtx_prob = m_iVtxProbCalc->calcVtxProb(sum_TrkProbTube, sum2_TrkProbTube);
-	      vtx_prob_coll.insert(std::multimap<double, Trk::Vertex >::value_type(vtx_prob, SP_line));
-	    }
-	  double vtx_prob_ratio = (*vtx_prob_coll.begin()).first/(*new_itr)->vtx_prob();
-	  if (vtx_prob_ratio >= m_resolvingCut)  {
-	    //check if the vertices can be resolved
-	    vertex_objects[vertex_objectsPosition].push_back(*new_itr);
-	    vtxState_new.erase(new_itr);
-	    if (new_itr != vtxState_new.end()) --new_itr;
-	    if (new_itr == vtxState_new.end()) break;
-	  }
-	}
-    }//loop over orig reduced coll
-  }//if spatial point collection size > 0
-
-  
-   //--------------------------------------------------------------------------------//
-  //--------------------step3: call vertex fitter----------------------------------//
-  //--------------------------------------------------------------------------------//
-
-  if (msgLvl(MSG::DEBUG)) msg () << " step THREE, vertex fit, vertex_objects size = "<<vertex_objects.size()<< endmsg;
-  //std::vector<Trk::VxCandidate* > theVxContainer; --David S.
-  std::vector<xAOD::Vertex*> theVertexContainer;
-  //prepare trk coll --> remove double tracks
-  std::vector<std::vector<InDet::ZVTOP_TrkPartBaseVertexState*> >::iterator vtx_itr = vertex_objects.begin();
-  for (; vtx_itr!= vertex_objects.end(); vtx_itr++)
-    {
-      bool with_IP = false;
-      std::vector <const Trk::TrackParticleBase*> trk_coll(0); //--->trk_coll for the fit
-      std::vector<InDet::ZVTOP_TrkPartBaseVertexState*>::iterator itr = (*vtx_itr).begin();
-      trk_coll.push_back((*itr)->tracks()[0]);
-      for (; itr != (*vtx_itr).end(); itr++)
-	{ 
-	  for ( std::vector <const Trk::TrackParticleBase*>::iterator vs_itr = ((*itr)->tracks()).begin(); vs_itr!= ((*itr)->tracks()).end(); vs_itr++)
-	    {
-	      if (msgLvl(MSG::DEBUG)) msg () <<"old trk coll size = "<<trk_coll.size()<<", new track = "<<(*vs_itr)<<endmsg;
-	      bool found = false;
-	      for (std::vector <const Trk::TrackParticleBase*>::iterator trk_itr = trk_coll.begin();  trk_itr!= trk_coll.end(); trk_itr++)  {
-		if (*vs_itr == *trk_itr)  found = true;
-	      }
-	      if (!found)  trk_coll.push_back(*vs_itr);
-	    }
-	  if ((*itr)->beam_spot()) with_IP = true;
-	  if (msgLvl(MSG::DEBUG)) msg () <<"new track collection size = "<<trk_coll.size()<<endmsg;
-	}
-      //call the fitter
-      //Trk::VxCandidate * myVxCandidate(0); --David S.
-      xAOD::Vertex * myxAODVertex(nullptr);
-      //const Amg::Vector3D p(0.,0.,0.); --David S.
-      const Amg::Vector3D startingPoint(0.,0.,0.);
-      //Trk::Vertex startingPoint(p); --David S.
-      //if (!with_IP) myVxCandidate = m_iVertexFitter->fit(trk_coll,startingPoint); --David S.
-      if (!with_IP) myxAODVertex = m_iVertexFitter->fit(trk_coll,startingPoint);
-      bool bad_chi2 = true;
-      //if (myVxCandidate) --David S.
-      if (myxAODVertex)
-	{
-	  while (bad_chi2)
-	    {
-	      //if (msgLvl(MSG::DEBUG)) msg () <<"rec Vertex = "<<myVxCandidate->recVertex().position()<<endmsg; --David S.
-	      if (msgLvl(MSG::DEBUG)) msg () << "Vertex pos = " << myxAODVertex->position() << endmsg;
-	      //std::vector< Trk::VxTrackAtVertex*> trkAtVtx = *(myVxCandidate->vxTrackAtVertex()); --David S.
-	      std::vector<Trk::VxTrackAtVertex> trkAtVtx = myxAODVertex->vxTrackAtVertex();
-	      //std::vector< Trk::VxTrackAtVertex*>::iterator trkAtVtx_Iter = trkAtVtx.begin(); --David S.
-	      std::vector<Trk::VxTrackAtVertex>::iterator trkAtVtx_Iter = trkAtVtx.begin();
-	      std::vector< const Trk::TrackParticleBase*>::iterator trk_Iter = trk_coll.begin();
-	      double largest_chi2 = 0.;
-	      std::vector< const Trk::TrackParticleBase*>::iterator index;
-	      for (; trkAtVtx_Iter!= trkAtVtx.end(); trkAtVtx_Iter++)
-		{
-		  double chi2 = (*trkAtVtx_Iter).trackQuality().chiSquared();
-		  if (chi2 > largest_chi2) {
-		    largest_chi2 = chi2;
-		    index = trk_Iter;
-		  }
-		  trk_Iter++;
-		}
-	      if (largest_chi2 > m_trk_chi2_cut)
-		{
-		  if (trk_coll.size() < 3) break;
-		  
-		    trk_coll.erase(index);
-		    if (trk_coll.size() >= 2) {
-		      //if (myVxCandidate!=0) { delete myVxCandidate; myVxCandidate=0; } --David S.
-		      if (myxAODVertex!=nullptr) { delete myxAODVertex; myxAODVertex=nullptr; }
-		      //myVxCandidate = m_iVertexFitter->fit(trk_coll, startingPoint); --David S.
-		      myxAODVertex = m_iVertexFitter->fit(trk_coll, startingPoint);
-		    }
-		    //if (myVxCandidate == 0) break; --David S.
-		    if (myxAODVertex == nullptr) break;
-		  
-		} else bad_chi2 = false;
-	    }
-	}
-      //if (myVxCandidate && bad_chi2 == false) secVertices.push_back(myVxCandidate); --David S.
-      if (myxAODVertex && !bad_chi2) secVertices.push_back(myxAODVertex);
-    }
-  new_secVertices = m_iAmbiguitySolver->solveAmbiguities(secVertices);
-  if (msgLvl(MSG::DEBUG)) msg () <<"vertex container size = "<<secVertices.size()<<endmsg;
-  for (Sp_Iter iter = vtxState_org.begin(); iter != vtxState_org.end(); iter++) delete *iter;
-  
-  } else {
-    if (msgLvl(MSG::DEBUG)) msg () <<"No tracks in this event, provide to the next event" <<  endmsg;
-  }
-  
-  return new Trk::VxSecVertexInfo(secVertices);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-//for xAOD::IParticle --David S.
-//Added purely to satisfy new inheritance in ISecVertexInJetFinder, not yet implemented
-/////////////////////////////////////////////////////////////////////////////////////////
-Trk::VxSecVertexInfo* InDet::ZVTOP_SecVtxTool::findSecVertex(const xAOD::Vertex & /*primaryVertex*/, const TLorentzVector & /*jetMomentum*/,const std::vector<const xAOD::IParticle*> & /*inputTracks*/) const {
-
-  if(msgLvl(MSG::DEBUG)){
-    msg(MSG::DEBUG) << "No ZVTOP_SecVtxTool implementation for xAOD::IParticle" << endmsg;
-    msg(MSG::DEBUG) << "Returning null VxSecVertexInfo*" << endmsg;
-  }
-
-  Trk::VxSecVertexInfo* returnInfo(nullptr);
-  return returnInfo;
-
-}
-
-////////////////////////////////////////////////////////////
-//for Trk::Track
-///////////////////////////////////////////////////////////
-Trk::VxSecVertexInfo* InDet::ZVTOP_SecVtxTool::findSecVertex(const Trk::RecVertex & primaryVertex,const TLorentzVector & jetMomentum, const std::vector<const Trk::Track*> & inputTracks) const
-{
-  //std::vector<Trk::VxCandidate*> secVertices; --David S.
-  std::vector<xAOD::Vertex*> secVertices;
-  //if (msgLvl(MSG::DEBUG)) msg () << "jet momentum Et = "<<jetMomentum.et() <<  endmsg; --David S.
-  if (msgLvl(MSG::DEBUG)) msg () << "jet momentum Et = "<<jetMomentum.Et() <<  endmsg;
-  if (!inputTracks.empty()) {
-    //some variables
-    typedef std::vector<const Trk::Track*>::const_iterator TrackDataVecIter;
-    std::vector<const Trk::Track*> trkColl(0); // the collection of tracks, which are assigned to one spatial point
-    std::vector<InDet::ZVTOP_VertexState*> vtxState_org(0);// vector of tracks and vertices, tracks can be assigned to more than one vertex, these ambiguities will be resolved later
-    std::multimap<double, InDet::ZVTOP_VertexState*> vtxProb_map;
-    //---------------------------------------------------------------------------//  
-    //-------step1: find spatial points & calculate vtx probabilities-------//
-    //--------------------------------------------------------------------------//
-
-    std::vector< std::vector<InDet::ZVTOP_VertexState*> > vertex_objects(0); //vector of vtx candidate & track collection pairs
-    
-    if (msgLvl(MSG::DEBUG)) msg () << "step ONE search for the spatial points, number of tracks = "<<inputTracks.size() <<  endmsg;
-    for (TrackDataVecIter itr_1  = inputTracks.begin(); itr_1 != inputTracks.end()-1; itr_1++)
-      {
-	double sum_TrkProbTube = 0.;
-	double sum2_TrkProbTube = 0.;
-	double vtxProb = 0.;
-	// trk-trk combination
-	for (TrackDataVecIter itr_2 = itr_1+1; itr_2 != inputTracks.end(); itr_2++)
-	  {
-	    Trk::Vertex* spatialPoint;
-	    spatialPoint = m_iSpatialPointFinder->findSpatialPoint((*itr_1),(*itr_2));
-	    if (spatialPoint != nullptr) 
-	      {
-		double TrkProbTube_1 = m_iTrkProbTubeCalc->calcProbTube(*(*itr_1),*spatialPoint);
-		double TrkProbTube_2 = m_iTrkProbTubeCalc->calcProbTube(*(*itr_2),*spatialPoint);
-		sum_TrkProbTube = TrkProbTube_1 + TrkProbTube_2;
-		sum2_TrkProbTube = pow(TrkProbTube_1,2.) + pow(TrkProbTube_2,2.);
-		if (sum_TrkProbTube != 0. )
-		  { 
-		    vtxProb = m_iVtxProbCalc->calcVtxProb(sum_TrkProbTube, sum2_TrkProbTube);
-		    trkColl.push_back((*itr_1));
-		    trkColl.push_back((*itr_2));
-		    bool IP = false;
-		    if (vtxProb > m_vtxProb_cut) vtxState_org.push_back(new InDet::ZVTOP_VertexState(vtxProb, *spatialPoint, IP, trkColl ));
-		    trkColl.clear();
-		  }
-	      }
-	    delete spatialPoint;
-	  }
-	//trk-IP combination
-	Trk::Vertex* spatialPoint = nullptr;
-	spatialPoint = m_iSpatialPointFinder->findSpatialPoint(primaryVertex,(*itr_1));
-	if (spatialPoint != nullptr) 
-	  {
-	    double BeamProbTube = m_iTrkProbTubeCalc->calcProbTube(primaryVertex,*spatialPoint);
-	    double TrkProbTube = m_iTrkProbTubeCalc->calcProbTube(*(*itr_1),*spatialPoint);
-	    sum_TrkProbTube = BeamProbTube + TrkProbTube;
-	    sum2_TrkProbTube = pow(TrkProbTube,2.) + pow(BeamProbTube,2.);
-	    if (sum_TrkProbTube != 0. ) 
-	      {
-		vtxProb = m_iVtxProbCalc->calcVtxProb(sum_TrkProbTube, sum2_TrkProbTube);
-		trkColl.push_back((*itr_1));
-		bool IP = true;
-		if (vtxProb > m_vtxProb_cut) vtxState_org.push_back(new InDet::ZVTOP_VertexState(vtxProb, *spatialPoint, IP, trkColl ));
-		trkColl.clear();
-	      }
-	  }
-	delete spatialPoint;
-      }
-    if (msgLvl(MSG::DEBUG)) msg () << " number of spatial points = "<<vtxState_org.size()<<endmsg;
-    //reduce the spatial point collection
-    typedef std::vector<InDet::ZVTOP_VertexState*>::iterator Sp_Iter;
-    std::vector< InDet::ZVTOP_VertexState*> vtxState;
-    for (Sp_Iter itr1 = vtxState_org.begin(); itr1 != vtxState_org.end(); itr1++)
-      {
-	
-	if (vtxState.empty()) vtxState.push_back(*itr1);
-	else {
-	  Trk::Vertex vtx_new = (*itr1)->vertex();
-	  bool can_be_resolved = false;
-	  for (Sp_Iter itr2 = vtxState.begin(); itr2 != vtxState.end(); itr2++)
-	    {
-	      Trk::Vertex vtx_in = (*itr2)->vertex();
-	      double r_diff = sqrt(pow(vtx_new.position().x(),2.) + pow(vtx_new.position().y(),2.)) - sqrt(pow(vtx_in.position().x(),2.) + pow(vtx_in.position().y(),2.));
-	      double z_diff = vtx_new.position().z() - vtx_in.position().z();
-	      if (fabs(r_diff) > 0.001 && fabs(z_diff) > 0.001 && r_diff != 0. && z_diff != 0.) can_be_resolved = true;
-	      else 
-		{
-		  for (unsigned int trk_itr = 0; trk_itr < (*itr1)->tracks().size(); trk_itr++) (*itr2)->tracks().push_back((*itr1)->tracks()[trk_itr]); 
-		  can_be_resolved = false;
-		  break;
-		}
-	    }
-	  if (can_be_resolved)  vtxState.push_back(*itr1);
-	}
-      }
-    for (Sp_Iter itr_sort = vtxState.begin();  itr_sort!= vtxState.end(); itr_sort++)  vtxProb_map.insert(std::multimap<double, InDet::ZVTOP_VertexState*>::value_type((*itr_sort)->vtx_prob(), *itr_sort));
-
-
-    //-------------------------------------------------------------------------------//
-    //----step2: vertex clustering, aim: to cluster all vertices together, ----//
-    //----which can not be resolved. The found vertex seeds and ---------//
-    //----associated tracks are taken as an input for the vertex fit. --------//
-    //------------------------------------------------------------------------------//
-
-
-    if (!vtxState.empty() ){
-      if (msgLvl(MSG::DEBUG)) msg () << " step TWO vertex clustering, number of reduced vertices = "<<vtxState.size()<< endmsg;
-      //sort the vtxState collection, starting with a highest vtx probability
-      std::vector<InDet::ZVTOP_VertexState*> vtxState_sorted;
-      unsigned int IP_counter = 0;
-      std::multimap<double, InDet::ZVTOP_VertexState*>::reverse_iterator s= vtxProb_map.rbegin();
-      for (;  s!=vtxProb_map.rend();  s++)  {
-	InDet::ZVTOP_VertexState* vtx_state = (*s).second;
-	if (vtx_state->beam_spot()) IP_counter += 1;
-	if (IP_counter > 1) vtx_state->set_beam_spot(false);
-	vtxState_sorted.push_back(vtx_state);
-      }
-      //store first element in the vertex_objects ---->vector<vector<VertexState>>
-      std::vector<InDet::ZVTOP_VertexState*> vtx_coll;
-      vtx_coll.push_back(*(vtxState_sorted.begin()));
-      vertex_objects.push_back(vtx_coll);//store first seed
-      std::vector< InDet::ZVTOP_VertexState*>  vtxState_new(vtxState_sorted); //copy of the vtxState_sorted
-      vtxState_new.erase(vtxState_new.begin()); // without first element
-      //loop over vtxState_sorted
-      for (Sp_Iter org_itr= vtxState_sorted.begin(); org_itr != vtxState_sorted.end(); org_itr++)
-	{
-	  Trk::Vertex seed = (*org_itr)->vertex();
-	  //found where the seed is already stored
-	  bool vtx_is_stored = false;
-	  unsigned int vertex_objectsPosition = 0; 
-	  for (unsigned int vertex_objectsItr = 0; vertex_objectsItr!= vertex_objects.size(); vertex_objectsItr++)
-	    {
-	      //stored vertices in the line vertex_objectsItr
-	      std::vector<InDet::ZVTOP_VertexState*> stored_vertices = vertex_objects[vertex_objectsItr];
-	      //---->inner loop
-	      for (unsigned int stored_vtx_itr = 0; stored_vtx_itr!= stored_vertices.size(); stored_vtx_itr++)
-		{
-		  Trk::Vertex storedVtx = stored_vertices[stored_vtx_itr]->vertex();
-		  double diff = ((*org_itr)->vertex().position().x() - storedVtx.position().x()) + ((*org_itr)->vertex().position().y() - storedVtx.position().y()) + ((*org_itr)->vertex().position().z() - storedVtx.position().z());
-		  if (fabs(diff) < 0.0001)
-		    {
-		      vertex_objectsPosition = vertex_objectsItr;
-		      vtx_is_stored = true;
-		      break; // break inner loop if found
-		    }
-		}
-	      if (vtx_is_stored) break; // break outer loop if found
-	    }
-	  if (!vtx_is_stored) {
-	    //if not stored
-	    std::vector<InDet::ZVTOP_VertexState*> new_vtx_coll;
-	    new_vtx_coll.push_back(*org_itr);
-	    vertex_objects.push_back(new_vtx_coll);
-	    vertex_objectsPosition = vertex_objects.size() - 1;
-	  }
-	  for (Sp_Iter new_itr = vtxState_new.begin(); new_itr!= vtxState_new.end(); new_itr++)
-	    {
-	      Trk::Vertex cand = (*new_itr)->vertex();
-	      //calculate the vtx prob function for this seed
-	      std::multimap<double, Trk::Vertex > vtx_prob_coll;
-	      vtx_prob_coll.insert(std::multimap<double, Trk::Vertex >::value_type((*new_itr)->vtx_prob(),(*new_itr)->vertex()));
-	      vtx_prob_coll.insert(std::multimap<double, Trk::Vertex >::value_type((*org_itr)->vtx_prob(),(*org_itr)->vertex()));
-	      for (double alpha = m_resolvingStep; alpha <1.; alpha += m_resolvingStep)
-		{
-		  Trk::Vertex SP_line = Trk::Vertex((*org_itr)->vertex().position() + alpha*((*new_itr)->vertex().position() - (*org_itr)->vertex().position()));
-                  double sum_TrkProbTube = 0.;
-                  double sum2_TrkProbTube = 0.;
-                  for (TrackDataVecIter trk_itr = inputTracks.begin(); trk_itr != inputTracks.end(); trk_itr++)
-		    {
-	              double TrkProbTube = 0.;
-                      TrkProbTube = m_iTrkProbTubeCalc->calcProbTube(*(*trk_itr),SP_line);
-		      sum_TrkProbTube += TrkProbTube;
-		      sum2_TrkProbTube += pow(TrkProbTube,2.);
-		    }
-		  double BeamProbTube = m_iTrkProbTubeCalc->calcProbTube(primaryVertex,SP_line);
-		  sum_TrkProbTube += BeamProbTube;
-		  sum2_TrkProbTube += pow(BeamProbTube,2.);
-		  double vtx_prob = m_iVtxProbCalc->calcVtxProb(sum_TrkProbTube, sum2_TrkProbTube);
-		  vtx_prob_coll.insert(std::multimap<double, Trk::Vertex >::value_type(vtx_prob, SP_line));
-		}
-              double vtx_prob_ratio = (*vtx_prob_coll.begin()).first/(*new_itr)->vtx_prob();
-	      if (vtx_prob_ratio >= m_resolvingCut)  {
-		//check if the vertices can be resolved
-		vertex_objects[vertex_objectsPosition].push_back(*new_itr);
-		vtxState_new.erase(new_itr);
-		if (new_itr != vtxState_new.end()) --new_itr;
-		if (new_itr == vtxState_new.end()) break;
-	      }
-	    }
-	}//loop over orig reduced coll
-    }//if spatial point collection size > 0
-
-    
-    //--------------------------------------------------------------------------------//
-    //--------------------step3: call vertex fitter----------------------------------//
-    //--------------------------------------------------------------------------------//
-    
-    if (msgLvl(MSG::DEBUG)) msg () << " step THREE, vertex fit, vertex_objects size = "<<vertex_objects.size()<< endmsg;
-    //std::vector<Trk::VxCandidate* > theVxContainer; --David S.
-    std::vector<xAOD::Vertex*> theVertexContainer;
-    //prepare trk coll --> remove double tracks
-    std::vector<std::vector<InDet::ZVTOP_VertexState*> >::iterator vtx_itr = vertex_objects.begin();
-    for (; vtx_itr!= vertex_objects.end(); vtx_itr++)
-      {
-	bool with_IP = false;
-	std::vector <const Trk::Track*> trk_coll(0); //--->trk_coll for the fit
-	std::vector<InDet::ZVTOP_VertexState*>::iterator itr = (*vtx_itr).begin();
-	trk_coll.push_back((*itr)->tracks()[0]);
-	for (; itr != (*vtx_itr).end(); itr++)
-	  { 
-	    for ( std::vector <const Trk::Track*>::iterator vs_itr = ((*itr)->tracks()).begin(); vs_itr!= ((*itr)->tracks()).end(); vs_itr++)
-	      {
-		bool found = false;
-		for (std::vector <const Trk::Track*>::iterator trk_itr = trk_coll.begin();  trk_itr!= trk_coll.end(); trk_itr++)  {
-		  if (*vs_itr == *trk_itr)  found = true;
-		}
-		if (!found)  trk_coll.push_back(*vs_itr);
-	      }
-	    if ((*itr)->beam_spot()) with_IP = true;
-	  }
-	//call the fitter
-	//Trk::VxCandidate * myVxCandidate(0); --David S.
-	xAOD::Vertex * myxAODVertex(nullptr);
-	//if (!with_IP) myVxCandidate = m_iVertexFitter->fit(trk_coll); --David S.
-	if (!with_IP) myxAODVertex = m_iVertexFitter->fit(trk_coll);
-	bool bad_chi2 = true;
-	//if (myVxCandidate) { --David S.
-	if (myxAODVertex) {
-          while (bad_chi2)
-	    {
-	      //std::vector< Trk::VxTrackAtVertex*> trkAtVtx = *(myVxCandidate->vxTrackAtVertex()); --David S.
-	      std::vector<Trk::VxTrackAtVertex> trkAtVtx = myxAODVertex->vxTrackAtVertex();
-	      //std::vector< Trk::VxTrackAtVertex*>::iterator trkAtVtx_Iter = trkAtVtx.begin(); --David S.
-	      std::vector<Trk::VxTrackAtVertex>::iterator trkAtVtx_Iter = trkAtVtx.begin();
-	      std::vector< const Trk::Track*>::iterator trk_Iter = trk_coll.begin();
-	      double largest_chi2 = 0.;
-	      std::vector< const Trk::Track*>::iterator index;
-	      for (; trkAtVtx_Iter!= trkAtVtx.end(); trkAtVtx_Iter++)
-		{
-		  double chi2 = (*trkAtVtx_Iter).trackQuality().chiSquared();
-		  if (chi2 > largest_chi2) {
-		    largest_chi2 = chi2;
-		    index = trk_Iter;
-		  }
-		  trk_Iter++;
-		}
-	      if (largest_chi2 > m_trk_chi2_cut)
-		{
-		  if (trk_coll.size() < 3) break;
-		  
-		    trk_coll.erase(index);
-		    if (trk_coll.size() >= 2) {
-		      //if (myVxCandidate!=0) { delete myVxCandidate; myVxCandidate=0; } --David S.
-		      if (myxAODVertex!=nullptr) { delete myxAODVertex; myxAODVertex=nullptr; }
-		      //myVxCandidate = m_iVertexFitter->fit(trk_coll); --David S.
-		      myxAODVertex = m_iVertexFitter->fit(trk_coll);
-		    }
-		    //if (myVxCandidate == 0) break; --David S.
-		    if (myxAODVertex == nullptr) break;
-		  
-		} else bad_chi2 = false;
-	    }
-	}
-	//if (myVxCandidate && bad_chi2 == false) secVertices.push_back(myVxCandidate); --David S.
-	if (myxAODVertex && !bad_chi2) secVertices.push_back(myxAODVertex);
-      }
-    if (msgLvl(MSG::DEBUG)) msg () <<"vertex container size = "<<secVertices.size()<<endmsg;
-    for (Sp_Iter iter = vtxState_org.begin(); iter != vtxState_org.end(); iter++) delete *iter;
-  } else {
-    if (msgLvl(MSG::DEBUG)) msg () <<"No tracks in this event, provide to the next event" <<  endmsg;
-  }
-  
-  return new Trk::VxSecVertexInfo(secVertices);
-  
-
-}
-
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_SimpleVtxProbCalc.cxx b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_SimpleVtxProbCalc.cxx
deleted file mode 100755
index 272566468230d2a4d46582183b4cabbbd2111c58..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_SimpleVtxProbCalc.cxx
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// ZVTOP_SimpleVtxProbCalc.cxx, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#include "InDetZVTOPVxFinder/ZVTOP_SimpleVtxProbCalc.h"
-
-//================ Constructor =================================================
-
-InDet::ZVTOP_SimpleVtxProbCalc::ZVTOP_SimpleVtxProbCalc(const std::string& t,
-			  const std::string& n,
-			  const IInterface*  p )
-  :
-  base_class(t,n,p)
-{
-  //  template for property decalration
-  //declareProperty("PropertyName", m_propertyName);
-}
-
-//================ Destructor =================================================
-
-InDet::ZVTOP_SimpleVtxProbCalc::~ZVTOP_SimpleVtxProbCalc()
-{}
-
-
-//================ Initialisation =================================================
-
-StatusCode InDet::ZVTOP_SimpleVtxProbCalc::initialize()
-{
-  ATH_CHECK( AlgTool::initialize() );
-  ATH_MSG_INFO ( "initialize() successful in " << name() );
-  return StatusCode::SUCCESS;
-}
-
-//================ Finalisation =================================================
-
-StatusCode InDet::ZVTOP_SimpleVtxProbCalc::finalize()
-{
-  return AlgTool::finalize();
-}
-
-//============================================================================================
-double InDet::ZVTOP_SimpleVtxProbCalc::calcVtxProb(double & trk_func_sum, double & trk_func_sum2) const
-{
-  double vtx_prob = 0.;
-  if (trk_func_sum != 0.) vtx_prob = trk_func_sum - trk_func_sum2/trk_func_sum;
-  return vtx_prob;
-}
-
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_SlowSpatialPointFinder.cxx b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_SlowSpatialPointFinder.cxx
deleted file mode 100644
index ee93309594b1b7046ef75f3c941dd0986ecb0101..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_SlowSpatialPointFinder.cxx
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// ZVTOP_SpatialPointFinder.cxx, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#include "InDetZVTOPVxFinder/ZVTOP_SlowSpatialPointFinder.h"
-#include "TrkParameters/TrackParameters.h"
-#include "VxVertex/Vertex.h"
-#include "Particle/TrackParticle.h"
-#include "EventPrimitives/EventPrimitives.h"
-#include "VxVertex/LinearizedTrack.h"
-#include "TrkVertexFitterInterfaces/IVertexLinearizedTrackFactory.h"
-
-//================ Constructor =================================================
-
-InDet::ZVTOP_SlowSpatialPointFinder::ZVTOP_SlowSpatialPointFinder(const std::string& t, const std::string& n, const IInterface*  p )
-  :
-  base_class(t,n,p)
-{
-  //  template for property declaration
-  declareProperty("Chi2_cut_value", m_chi2);
-  declareProperty ( "LinearizedTrackFactory", m_linFactory );
-}
-
-//================ Destructor =================================================
-
-InDet::ZVTOP_SlowSpatialPointFinder::~ZVTOP_SlowSpatialPointFinder()
-{}
-
-
-//================ Initialisation =================================================
-
-StatusCode InDet::ZVTOP_SlowSpatialPointFinder::initialize()
-{
-  
-  StatusCode sc = AlgTool::initialize();
-
-  if (sc.isFailure()) return sc;
-  // get tool svc
-  if(m_linFactory.retrieve().isFailure())
-    {
-      msg (MSG::ERROR) <<"Could not find ToolSvc."<<endmsg;
-      return sc;
-    } msg (MSG::INFO) << "Retrieved tool " << m_linFactory << endmsg;
-  
-  msg (MSG::INFO) << "initialize() successful in " << name() << endmsg;
-  return StatusCode::SUCCESS;
-}
-
-//================ Finalisation =================================================
-
-StatusCode InDet::ZVTOP_SlowSpatialPointFinder::finalize()
-{
-  StatusCode sc = AlgTool::finalize();
-  return sc;
-}
-//============================================================================================
-Trk::Vertex* InDet::ZVTOP_SlowSpatialPointFinder::findSpatialPoint(const Trk::Track* trk_1, const Trk::Track* trk_2) const
-{
-  const Trk::TrackParameters* perigee_1(dynamic_cast<const Trk::TrackParameters*>(trk_1->perigeeParameters()));
-  const Trk::TrackParameters* perigee_2(dynamic_cast<const Trk::TrackParameters*>(trk_2->perigeeParameters()));
-  if (!perigee_1 | !perigee_2) {
-    if (msgLvl(MSG::VERBOSE)) msg() << "Dynamic cast to MeasuredPerigee failed. Skipping this pair" << endmsg;
-    return nullptr;
-  } 
-		Trk::Vertex* vertex = findSpatialPoint(perigee_1, perigee_2);
-		return vertex;
-  //if measured perigee
-}
-
-//============================================================================================
-
-Trk::Vertex* InDet::ZVTOP_SlowSpatialPointFinder::findSpatialPoint(const Trk::RecVertex vtx, const Trk::Track* trk_1) const
-{
-  const Trk::TrackParameters *perigee_1(dynamic_cast<const Trk::TrackParameters*>(trk_1->perigeeParameters()));
-  if (!perigee_1) {
-    if (msgLvl(MSG::VERBOSE)) msg() << "Dynamic cast to MeasuredPerigee failed. Skipping this pair" << endmsg;
-    return nullptr;
-  } 
-    //we need Trk::Vertex
-    Trk::Vertex* vertex = findSpatialPoint(vtx, perigee_1);
-    return vertex;
-  
-}
-
-//============================================================================================
-Trk::Vertex* InDet::ZVTOP_SlowSpatialPointFinder::findSpatialPoint(const Rec::TrackParticle* trk_1, const Rec::TrackParticle* trk_2) const
-{
-  const Trk::TrackParameters* perigee_1(trk_1->measuredPerigee());
-  const Trk::TrackParameters* perigee_2(trk_2->measuredPerigee());
-  if (!perigee_1 | !perigee_2) {
-    if (msgLvl(MSG::VERBOSE)) msg() << "Dynamic cast to MeasuredPerigee failed. Skipping this pair" << endmsg;
-    return nullptr;
-  } 
-    //we need Trk::Vertex
-    Trk::Vertex* vertex = findSpatialPoint(perigee_1, perigee_2);
-    return vertex;
-  //if measured perigee
-}
-
-//============================================================================================
-Trk::Vertex* InDet::ZVTOP_SlowSpatialPointFinder::findSpatialPoint(const Trk::RecVertex vtx, const Rec::TrackParticle* trk_1) const
-{
-  const Trk::TrackParameters* perigee_1(trk_1->measuredPerigee());
-  if (!perigee_1) {
-    if (msgLvl(MSG::VERBOSE)) msg() << "Dynamic cast to MeasuredPerigee failed. Skipping this pair" << endmsg;
-    return nullptr;
-  } 
-    Trk::Vertex* vertex = findSpatialPoint(vtx, perigee_1);
-    return vertex;
-  
-}
-
-//============================================================================================
-Trk::Vertex* InDet::ZVTOP_SlowSpatialPointFinder::findSpatialPoint(const Trk::TrackParticleBase* trk_1, const Trk::TrackParticleBase* trk_2) const
-{
-  const Trk::TrackParameters* perigee_1 = dynamic_cast<const Trk::TrackParameters*>(&(trk_1)->definingParameters());
-  const Trk::TrackParameters* perigee_2 = dynamic_cast<const Trk::TrackParameters*>(&(trk_2)->definingParameters());
-  if (!perigee_1 | !perigee_2) {
-    if (msgLvl(MSG::VERBOSE)) msg() << "Dynamic cast to MeasuredPerigee failed. Skipping this pair" << endmsg;
-    return nullptr;
-  } 
-    //we need Trk::Vertex
-    Trk::Vertex* vertex = findSpatialPoint(perigee_1, perigee_2);
-    return vertex;
-  //if measured perigee
-}
-//============================================================================================
-Trk::Vertex* InDet::ZVTOP_SlowSpatialPointFinder::findSpatialPoint(const Trk::RecVertex vtx, const Trk::TrackParticleBase* trk_1) const
-{
-  const Trk::TrackParameters* perigee_1 = dynamic_cast<const Trk::TrackParameters*>(&(trk_1)->definingParameters());
-  if (!perigee_1) {
-    if (msgLvl(MSG::VERBOSE)) msg() << "Dynamic cast to MeasuredPerigee failed. Skipping this pair" << endmsg;
-    return nullptr;
-  } 
-    Trk::Vertex* vertex = findSpatialPoint(vtx, perigee_1);
-    return vertex;
-  
-}
-
-//=============================================================================================
-
-Trk::Vertex* InDet::ZVTOP_SlowSpatialPointFinder::findSpatialPoint(const Trk::TrackParameters* perigee_1, const Trk::TrackParameters* perigee_2) const
-{
-  Amg::Vector3D spatialPoint;
-  //we need Trk::Vertex
-  double chi2(0.);
-  const Amg::Vector3D lin_point(0.,0.,0.); // we start our linearization always at ATLAS origin!
-  Trk::Vertex linPoint(lin_point);
-  for (unsigned int i = 0; i < 3; i++){
-    Trk::LinearizedTrack* linTrack1 = m_linFactory->linearizedTrack (perigee_1, linPoint.position() );
-    Trk::LinearizedTrack* linTrack2 = m_linFactory->linearizedTrack (perigee_2, linPoint.position() );
-    if (linTrack1 && linTrack2)
-      {
-	Amg::Vector3D locXpVec_1 = linTrack1->expectedPositionAtPCA();
-	locXpVec_1[0] = locXpVec_1[0] - linPoint.position()[0];
-	locXpVec_1[1] = locXpVec_1[1] - linPoint.position()[1];
-	locXpVec_1[2] = locXpVec_1[2] - linPoint.position()[2];
-	
-	Amg::Vector3D locXpVec_2 = linTrack2->expectedPositionAtPCA();
-	locXpVec_2[0] = locXpVec_2[0] - linPoint.position()[0];
-	locXpVec_2[1] = locXpVec_2[1] - linPoint.position()[1];
-	locXpVec_2[2] = locXpVec_2[2] - linPoint.position()[2];
-	
-	AmgMatrix(2,2) billoirCovMat_1 = linTrack1->expectedCovarianceAtPCA().block<2,2>(0,0);
-	AmgMatrix(2,2) billoirCovMat_2 = linTrack2->expectedCovarianceAtPCA().block<2,2>(0,0);
-	AmgMatrix(2,2) billoirWeightMat_1 = billoirCovMat_1.inverse().eval();
-	AmgMatrix(2,2) billoirWeightMat_2 = billoirCovMat_2.inverse().eval();
-	AmgMatrix(3,3) DtWD_sum;
-	Amg::Vector3D DtWDx_sum;
-	AmgMatrix(3,3) DtWD_1;
-	AmgMatrix(3,3) DtWD_2;
-	// D matrix for d0 and z0
-	AmgMatrix(2,3) D_1 = linTrack1->positionJacobian().block<2,3>(0,0);
-	AmgMatrix(2,3) D_2 = linTrack2->positionJacobian().block<2,3>(0,0);
-	// Calculate DtWD and DtWD*x and sum them
-	DtWD_1 = D_1.transpose()*billoirWeightMat_1*D_1;
-	DtWD_2 = D_2.transpose()*billoirWeightMat_2*D_2;
-	DtWD_sum = DtWD_1 + DtWD_2;
-	DtWDx_sum = DtWD_1 * locXpVec_1 + DtWD_2* locXpVec_2;
-	AmgMatrix(3,3) cov_spatialPoint = DtWD_sum.inverse();
-	spatialPoint = cov_spatialPoint * DtWDx_sum;
-	Amg::Vector3D XpVec_sp_1 = locXpVec_1 - spatialPoint;
-	Amg::Vector3D XpVec_sp_2 = locXpVec_2 - spatialPoint;
-	chi2 =  XpVec_sp_1.dot(DtWD_1*XpVec_sp_1) + XpVec_sp_2.dot(DtWD_2*XpVec_sp_2);
-	spatialPoint[0] += linPoint.position()[0];
-	spatialPoint[1] += linPoint.position()[1];
-	spatialPoint[2] += linPoint.position()[2];
-	if (msgLvl(MSG::VERBOSE)) msg() <<"found spatial point = ("<<spatialPoint[0]<<", "<<spatialPoint[1]<<", "<<spatialPoint[2]<<")"<< endmsg;
-	if (msgLvl(MSG::VERBOSE)) msg() <<"chi2 = "<<chi2<<endmsg;
-	linPoint = Trk::Vertex(spatialPoint);
-      }	
-    delete linTrack1; linTrack1=nullptr; delete linTrack2; linTrack2=nullptr;
-  }// two iterations
-  if (chi2 <= m_chi2) return new Trk::Vertex(spatialPoint);
-  
-    if (msgLvl(MSG::VERBOSE)) msg() <<"found spatial point candidate doesn't pass chi2_cut" << endmsg;
-    return nullptr;
-  
-}
-
-//========================================================================================================
-Trk::Vertex* InDet::ZVTOP_SlowSpatialPointFinder::findSpatialPoint(const Trk::RecVertex vtx, const Trk::TrackParameters* perigee_1) const
-{
-  Amg::Vector3D spatialPoint;
-  //we need Trk::Vertex
-  double chi2(0.);
-  const Amg::Vector3D lin_point(0.,0.,0.); // we start our linearization always at ATLAS origin!
-  Trk::Vertex linPoint(lin_point);
-  for (unsigned int i = 0; i < 3; i++){
-    Trk::LinearizedTrack* linTrack1 = m_linFactory->linearizedTrack (perigee_1, linPoint.position() );
-    if (linTrack1)
-      {
-	Amg::Vector3D locXpVec_1(0.,0.,0.);
-	AmgMatrix(3,3) DtWD_1;
-	AmgMatrix(3,3) vtx_weight;
-	locXpVec_1[0]= locXpVec_1[0] - linPoint.position()[0];
-	locXpVec_1[1]= locXpVec_1[1] - linPoint.position()[1];
-	locXpVec_1[2]= locXpVec_1[2] - linPoint.position()[2];
-
-	AmgMatrix(3,3) DtWD_sum;
-	Amg::Vector3D DtWDx_sum;
-	AmgMatrix(2,2) billoirCovMat_1 = linTrack1->expectedCovarianceAtPCA().block<2,2>(0,0);
-	AmgMatrix(2,2) billoirWeightMat_1 = billoirCovMat_1.inverse().eval();
-	// D matrix for d0 and z0
-	AmgMatrix(2,3) D_1 = linTrack1->positionJacobian().block<2,3>(0,0);
-	// Calculate DtWD and DtWD*x and sum them
-	DtWD_1 = D_1.transpose()*billoirWeightMat_1*D_1 ;
-	vtx_weight = vtx.covariancePosition().inverse();
-	DtWD_sum = DtWD_1 + vtx_weight;
-	Amg::Vector3D vtx_pos(3,0); vtx_pos[0] = vtx.position().x(); vtx_pos[1] = vtx.position().y(); vtx_pos[2] = vtx.position().z();
-	DtWDx_sum =  DtWD_1 * locXpVec_1 + vtx_weight*vtx_pos;
-	AmgMatrix(3,3) cov_spatialPoint = DtWD_sum.inverse();
-	spatialPoint = cov_spatialPoint * DtWDx_sum;
-	Amg::Vector3D XpVec_sp_1 = locXpVec_1 - spatialPoint;
-	Amg::Vector3D sp_vtx = spatialPoint - vtx_pos;
-	chi2 =  XpVec_sp_1.dot(DtWD_1*XpVec_sp_1) + sp_vtx.dot(vtx_weight*sp_vtx);
-	spatialPoint[0] += linPoint.position()[0];
-	spatialPoint[1] += linPoint.position()[1];
-	spatialPoint[2] += linPoint.position()[2];
-	if (msgLvl(MSG::VERBOSE)) msg() <<"found spatial point = ("<<spatialPoint[0]<<", "<<spatialPoint[1]<<", "<<spatialPoint[2]<<")"<< endmsg;
-	if (msgLvl(MSG::VERBOSE)) msg() <<"chi2 = "<<chi2<<endmsg;
-	linPoint = Trk::Vertex (spatialPoint);
-      }
-    delete linTrack1; linTrack1=nullptr; 
-  }
-  if (chi2 <= m_chi2) return new Trk::Vertex(spatialPoint);
-  
-    if (msgLvl(MSG::VERBOSE)) msg() <<"found spatial point candidate doesn't pass chi2_cut" << endmsg;
-    return nullptr;
-  
-}
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_SpatialPointFinder.cxx b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_SpatialPointFinder.cxx
deleted file mode 100755
index 971ff9b1fd2a6acde7e7cd35981e6ccc70ac1a2a..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_SpatialPointFinder.cxx
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// ZVTOP_SpatialPointFinder.cxx, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#include "InDetZVTOPVxFinder/ZVTOP_SpatialPointFinder.h"
-#include "TrkParameters/TrackParameters.h"
-#include "VxVertex/Vertex.h"
-#include "Particle/TrackParticle.h"
-#include "EventPrimitives/EventPrimitives.h"
-#include "TrkParticleBase/TrackParticleBase.h"
-#include <cmath>
-//================ Constructor =================================================
-
-InDet::ZVTOP_SpatialPointFinder::ZVTOP_SpatialPointFinder(const std::string& t,
-			  const std::string& n,
-			  const IInterface*  p )
-  :
-  base_class(t,n,p)
-{
-  //  template for property declaration
-  declareProperty("Chi2_cut_value", m_chi2);
-}
-
-//================ Destructor =================================================
-
-InDet::ZVTOP_SpatialPointFinder::~ZVTOP_SpatialPointFinder()
-{}
-
-
-//================ Initialisation =================================================
-
-StatusCode InDet::ZVTOP_SpatialPointFinder::initialize()
-{
-  ATH_MSG_DEBUG( "initialize() successful" );
-  return StatusCode::SUCCESS;
-}
-
-//================ Finalisation =================================================
-
-StatusCode InDet::ZVTOP_SpatialPointFinder::finalize()
-{
-  return StatusCode::SUCCESS;
-}
-//============================================================================================
-Trk::Vertex* InDet::ZVTOP_SpatialPointFinder::findSpatialPoint(const Trk::Track* trk_1, const Trk::Track* trk_2) const
-{
-  const Trk::TrackParameters* perigee_1(dynamic_cast<const Trk::TrackParameters*>(trk_1->perigeeParameters()));
-  const Trk::TrackParameters* perigee_2(dynamic_cast<const Trk::TrackParameters*>(trk_2->perigeeParameters()));
-  if ((!perigee_1) or (!perigee_2)) {
-    ATH_MSG_DEBUG( "Dynamic cast to MeasuredPerigee failed. Skipping this pair" );
-    return nullptr;
-  } 
-    Trk::Vertex * vertex = findSpatialPoint(perigee_1,perigee_2);
-    return vertex;
-  //if measured perigee
-}
-
-//===============================================================================================
-Trk::Vertex* InDet::ZVTOP_SpatialPointFinder::findSpatialPoint(const Trk::RecVertex vtx, const Trk::Track* trk_1) const
-{
-  const Trk::TrackParameters *perigee_1(dynamic_cast<const Trk::TrackParameters*>(trk_1->perigeeParameters()));
-  if (!perigee_1) {
-    ATH_MSG_DEBUG( "Dynamic cast to MeasuredPerigee failed. Skipping this pair" );
-    return nullptr;
-  } 
-    Trk::Vertex * vertex = findSpatialPoint(vtx,perigee_1);
-    return vertex;
-  
-}
-
-//============================================================================================
-Trk::Vertex* InDet::ZVTOP_SpatialPointFinder::findSpatialPoint(const Rec::TrackParticle* trk_1, const Rec::TrackParticle* trk_2) const
-{
-  const Trk::TrackParameters* perigee_1(trk_1->measuredPerigee());
-  const Trk::TrackParameters* perigee_2(trk_2->measuredPerigee());
-  if ((!perigee_1) or (!perigee_2)) {
-    ATH_MSG_DEBUG( "Dynamic cast to MeasuredPerigee failed. Skipping this pair" );
-    return nullptr;
-  } 
-		Trk::Vertex * vertex = findSpatialPoint(perigee_1,perigee_2);
-		return vertex;
-  //if measured perigee
-}
-
-//============================================================================================
-Trk::Vertex* InDet::ZVTOP_SpatialPointFinder::findSpatialPoint(const Trk::RecVertex vtx, const Rec::TrackParticle* trk_1) const
-{
-  const Trk::TrackParameters* perigee_1(trk_1->measuredPerigee());
-  if (!perigee_1) {
-    ATH_MSG_DEBUG( "Dynamic cast to MeasuredPerigee failed. Skipping this pair" );
-    return nullptr;
-  } 
-    Trk::Vertex * vertex = findSpatialPoint(vtx,perigee_1);
-    return vertex;
-  
-}
-//============================================================================================
-Trk::Vertex* InDet::ZVTOP_SpatialPointFinder::findSpatialPoint(const Trk::TrackParticleBase* trk_1, const Trk::TrackParticleBase* trk_2) const
-{
-  const Trk::TrackParameters* perigee_1 = dynamic_cast<const Trk::TrackParameters*>(&trk_1->definingParameters());
-  const Trk::TrackParameters* perigee_2 = dynamic_cast<const Trk::TrackParameters*>(&trk_2->definingParameters());
-  if ((!perigee_1) or (!perigee_2)) {
-    ATH_MSG_DEBUG ("Dynamic cast to MeasuredPerigee failed. Skipping this pair" );
-    return nullptr;
-  } 
-    Trk::Vertex * vertex = findSpatialPoint(perigee_1,perigee_2);
-    return vertex;
-  //if measured perigee
-}
-
-//============================================================================================
-Trk::Vertex* InDet::ZVTOP_SpatialPointFinder::findSpatialPoint(const Trk::RecVertex vtx, const Trk::TrackParticleBase* trk_1) const
-{
-  const Trk::TrackParameters* perigee_1 = dynamic_cast<const Trk::TrackParameters*>(&trk_1->definingParameters());
-  if (!perigee_1) {
-    ATH_MSG_DEBUG( "Dynamic cast to MeasuredPerigee failed. Skipping this pair" );
-    return nullptr;
-  } 
-    Trk::Vertex * vertex = findSpatialPoint(vtx,perigee_1);
-    return vertex;
-  
-}
-
-//===============================================================================================
-
-
-Trk::Vertex* InDet::ZVTOP_SpatialPointFinder::findSpatialPoint(const Trk::TrackParameters* param_1, const Trk::TrackParameters* param_2) const
-{
-  Amg::Vector3D spatialPoint;
-  const Trk::Perigee* perigee_1 =dynamic_cast<const Trk::Perigee*>(param_1);
-  const Trk::Perigee* perigee_2 =dynamic_cast<const Trk::Perigee*>(param_2);
-  if ((not perigee_1) or (not perigee_2)){
-   ATH_MSG_DEBUG( "Dynamic cast to MeasuredPerigee failed in findSpatialPoint" );
-   return nullptr;
-  }
-
-  double cot_theta_1 = 1./std::tan(perigee_1->parameters()[Trk::theta]);
-  double sphi_1 = std::sin(perigee_1->parameters()[Trk::phi]);
-  double cphi_1 = std::cos(perigee_1->parameters()[Trk::phi]);
-  Amg::Vector3D locXpVec_1;
-  locXpVec_1[0]= -perigee_1->parameters()[Trk::d0]*sphi_1;
-  locXpVec_1[1]= perigee_1->parameters()[Trk::d0]*cphi_1;
-  locXpVec_1[2]= perigee_1->parameters()[Trk::z0];
-  
-  double cot_theta_2 = 1./std::tan(perigee_2->parameters()[Trk::theta]);
-  double sphi_2 = std::sin(perigee_2->parameters()[Trk::phi]);
-  double cphi_2 = std::cos(perigee_2->parameters()[Trk::phi]);
-  Amg::Vector3D locXpVec_2;
-  locXpVec_2[0]= -perigee_2->parameters()[Trk::d0]*sphi_2;
-  locXpVec_2[1]= perigee_2->parameters()[Trk::d0]*cphi_2;
-  locXpVec_2[2]= perigee_2->parameters()[Trk::z0];
-  
-  AmgMatrix(3,3) DtWD_sum;
-  Amg::Vector3D DtWDx_sum;
-  double chi2(0.);
-  AmgMatrix(3,3) DtWD_1;
-  AmgMatrix(3,3) DtWD_2;
-  AmgMatrix(2,2) cov_mat_1;
-  AmgMatrix(2,2) cov_mat_2;
-  cov_mat_1 =(* perigee_1->covariance()).block<2,2>(0,0);
-  cov_mat_2 =(* perigee_2->covariance()).block<2,2>(0,0);
-
-  // and the weightmatrix
-  AmgMatrix(2,2) weight_mat_1 = cov_mat_1.inverse().eval();
-  AmgMatrix(2,2) weight_mat_2 = cov_mat_2.inverse().eval();
-
-  // calculate the D matrix
-  AmgMatrix(2,3) D_1;
-  AmgMatrix(2,3) D_2;
-  D_1(0,0) = -sphi_1              ; D_1(0,1) = cphi_1              ; D_1(0,2) = 0.;
-  D_1(1,0) = -cphi_1*cot_theta_1  ; D_1(1,1) = -sphi_1*cot_theta_1 ; D_1(1,2) = 1.;
-  D_2(0,0) = -sphi_2              ; D_2(0,1) = cphi_2              ; D_2(0,2) = 0.;
-  D_2(1,0) = -cphi_2*cot_theta_2  ; D_2(1,1) = -sphi_2*cot_theta_2 ; D_2(1,2) = 1.;
-  // Calculate DtWD and DtWD*x and sum them
-  DtWD_1 = D_1.transpose()*weight_mat_1*D_1;
-  DtWD_2 = D_2.transpose()*weight_mat_2*D_2;
-  DtWD_sum = DtWD_1 + DtWD_2;
-  DtWDx_sum = DtWD_1*locXpVec_1 + DtWD_2*locXpVec_2;
-  AmgMatrix(3,3) cov_spatialPoint = DtWD_sum.inverse();
-  spatialPoint = cov_spatialPoint * DtWDx_sum;
-  Amg::Vector3D XpVec_sp_1 = locXpVec_1 - spatialPoint;
-  Amg::Vector3D XpVec_sp_2 = locXpVec_2 - spatialPoint;
-  chi2 =  XpVec_sp_1.dot(DtWD_1*XpVec_sp_1) + XpVec_sp_2.dot(DtWD_2*XpVec_sp_2);
-  if (chi2 <= m_chi2) 
-    { 
-      ATH_MSG_DEBUG("found spatial point = ("<<spatialPoint[0]<<", "<<spatialPoint[1]<<", "<<spatialPoint[2]<<")");
-      return new Trk::Vertex(spatialPoint);
-    } 
-    
-      ATH_MSG_DEBUG("found spatial point candidate doesn't pass chi2_cut" );
-      return nullptr;
-    
-     	
-}
-
-
-//============================================================================================
-
-Trk::Vertex* InDet::ZVTOP_SpatialPointFinder::findSpatialPoint(const Trk::RecVertex vtx, const Trk::TrackParameters* param_1) const
-{
-  Amg::Vector3D spatialPoint;
-  const Trk::Perigee* perigee_1 =dynamic_cast<const Trk::Perigee*>(param_1);
-  if (not perigee_1){
-    ATH_MSG_DEBUG("cast of perigee failed in findSpatialPoint" );
-    return nullptr;
-  }
-  double cot_theta_1 = 1./std::tan(perigee_1->parameters()[Trk::theta]);
-  double sphi_1 = std::sin(perigee_1->parameters()[Trk::phi]);
-  double cphi_1 = std::cos(perigee_1->parameters()[Trk::phi]);
-  Amg::Vector3D locXpVec_1;
-  AmgMatrix(3,3) DtWD_1;
-  AmgMatrix(3,3) vtx_weight;
-  double chi2(0.);
-  locXpVec_1[0]= -perigee_1->parameters()[Trk::d0]*sphi_1;
-  locXpVec_1[1]= perigee_1->parameters()[Trk::d0]*cphi_1;
-  locXpVec_1[2]= perigee_1->parameters()[Trk::z0];
-
-  AmgMatrix(3,3) DtWD_sum;
-  Amg::Vector3D DtWDx_sum;
-  AmgMatrix(2,2) cov_mat_1 = (*perigee_1->covariance()).block<2,2>(0,0);
-  // and the weightmatrix
-  AmgMatrix(2,2) weight_mat_1 = cov_mat_1.inverse();
-  AmgMatrix(2,3) D_1;
-  D_1(0,0) = -sphi_1              ; D_1(0,1) = cphi_1              ; D_1(0,2) = 0.;
-  D_1(1,0) = -cphi_1*cot_theta_1  ; D_1(1,1) = -sphi_1*cot_theta_1 ; D_1(1,2) = 1.;
-  DtWD_1 = D_1.transpose()*weight_mat_1*D_1;
-  vtx_weight = vtx.covariancePosition().inverse();
-  DtWD_sum = DtWD_1 + vtx_weight;
-  Amg::Vector3D vtx_pos; vtx_pos[0] = vtx.position().x(); vtx_pos[1] = vtx.position().y(); vtx_pos[2] = vtx.position().z();
-  DtWDx_sum = DtWD_1*locXpVec_1 + vtx_weight*vtx_pos;
-  AmgMatrix(3,3) cov_spatialPoint = DtWD_sum.inverse();
-  spatialPoint = cov_spatialPoint * DtWDx_sum;
-  Amg::Vector3D XpVec_sp_1 = locXpVec_1 - spatialPoint;
-  Amg::Vector3D sp_vtx = spatialPoint - vtx_pos;
-  chi2 =  XpVec_sp_1.dot(DtWD_1*XpVec_sp_1) + sp_vtx.dot(vtx_weight*sp_vtx);
-  if (chi2 <= m_chi2) 
-    { 
-      if (msgLvl(MSG::DEBUG)) msg() <<"found spatial point = ("<<spatialPoint[0]<<", "<<spatialPoint[1]<<", "<<spatialPoint[2]<<")"<< endmsg;
-      return new Trk::Vertex(spatialPoint);
-    } 
-    
-      if (msgLvl(MSG::DEBUG)) msg() <<"found spatial point candidate doesn't pass chi2_cut" << endmsg;
-      return nullptr;
-    
-
-}
-
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_Tool.cxx b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_Tool.cxx
deleted file mode 100755
index 7799f4eb48d0b0575255fa0e9685549d675a5482..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_Tool.cxx
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// ZVTOP_Tool.cxx, (c) ATLAS Detector software
-// begin   : 30-10-2006
-// authors : Tatjana Lenz
-// email   : tatjana.lenz@cern.ch
-// changes :
-///////////////////////////////////////////////////////////////////
-
-#include "InDetZVTOPVxFinder/ZVTOP_Tool.h"
-#include "TrkVertexFitterInterfaces/IVertexFitter.h"
-#include "InDetZVTOPVxFinder/ZVTOP_SpatialPointFinder.h"
-#include "InDetZVTOPVxFinder/ZVTOP_TrkPartBaseVertexState.h"
-#include "InDetZVTOPVxFinder/ZVTOP_VertexState.h"
-#include "InDetZVTOPVxFinder/IZVTOP_TrkProbTubeCalc.h"
-#include "InDetZVTOPVxFinder/IZVTOP_SimpleVtxProbCalc.h"
-#include "VxVertex/Vertex.h"
-#include "VxVertex/VxTrackAtVertex.h"
-#include "TrkTrack/LinkToTrack.h"
-#include "InDetBeamSpotService/IBeamCondSvc.h"
-#include "AthContainers/DataVector.h"
-#include "TrkTrack/TrackCollection.h"
-#include "VxVertex/VxContainer.h"
-#include "xAODTracking/VertexContainer.h"
-#include "xAODTracking/TrackParticleContainer.h"
-#include <map>
-#include <utility>
-//================ Constructor =================================================
-
-InDet::ZVTOP_Tool::ZVTOP_Tool(const std::string& t,
-			  const std::string& n,
-			  const IInterface*  p )
-  :
-  AthAlgTool(t,n,p),
-  m_iVertexFitter("Trk::FullVertexFitter"),
-  m_iSpatialPointFinder("InDet::SpatialPointFinder"),
-  m_iTrkProbTubeCalc("InDet::TrkProbTubeCalc"),
-  m_iVtxProbCalc("InDet::VtxProbCalc"),
-  m_iBeamCondSvc("BeamCondSvc",n)
-{
-  //  template for property declaration
-  declareInterface<IVertexFinder>(this);
-  declareProperty("VertexFitterTool",m_iVertexFitter);
-  declareProperty("SpatialPointFinderTool",m_iSpatialPointFinder);
-  declareProperty("TrkProbTubeCalcTool",m_iTrkProbTubeCalc);
-  declareProperty("VtxProbCalcTool",m_iVtxProbCalc);
-  declareProperty("ResolvingCutValue", m_resolvingCut = 0.6);
-  declareProperty("ResolvingStepValue", m_resolvingStep = 0.3);
-  declareProperty("VtxProbCut", m_vtxProb_cut = 0.00001);
-  declareProperty("MaxChi2PerTrack", m_trk_chi2_cut = 5.);
-  declareProperty("BeamPositionSvc", m_iBeamCondSvc);
-}
-
-//================ Destructor =================================================
-
-InDet::ZVTOP_Tool::~ZVTOP_Tool()
-{}
-
-
-//================ Initialisation =================================================
-
-StatusCode InDet::ZVTOP_Tool::initialize()
-{
-  StatusCode sc = AlgTool::initialize();
-
-  msg (MSG::INFO) << name() << " initialize()" << endmsg;
-  if (sc.isFailure()) return sc;
-
-  /* Retrieve Tools*/
-  //SpatialPointFinder
-  if ( m_iSpatialPointFinder.retrieve().isFailure() ) {
-      msg (MSG::FATAL) << "Failed to retrieve tool " << m_iSpatialPointFinder << endmsg;
-      return StatusCode::FAILURE;
-  } msg (MSG::INFO) << "Retrieved tool " << m_iSpatialPointFinder << endmsg;
-
-  //Gaussian Probability Tube for the Track Trajectory
-  if ( m_iTrkProbTubeCalc.retrieve().isFailure() ) {
-      msg (MSG::FATAL) << "Failed to retrieve tool " << m_iTrkProbTubeCalc<< endmsg;
-      return StatusCode::FAILURE;
-  } msg (MSG::INFO) << "Retrieved tool " << m_iTrkProbTubeCalc << endmsg;
-
-  //Vertex Probability Function
-  if ( m_iVtxProbCalc.retrieve().isFailure() ) {
-      msg (MSG::FATAL) << "Failed to retrieve tool " << m_iVtxProbCalc<< endmsg;
-      return StatusCode::FAILURE;
-  } msg (MSG::INFO) << "Retrieved tool " << m_iVtxProbCalc << endmsg;
-
-  //Beam Spot
-  sc = m_iBeamCondSvc.retrieve();
-  if (sc.isFailure())
-  {
-    msg (MSG::ERROR) << "Could not find BeamCondSvc." << endmsg;
-    return sc;
-  }
-  //VxFitter
-  if ( m_iVertexFitter.retrieve().isFailure() ) {
-      msg (MSG::FATAL) << "Failed to retrieve tool " << m_iVertexFitter << endmsg;
-      return StatusCode::FAILURE;
-  } msg (MSG::INFO) << "Retrieved tool " << m_iVertexFitter << endmsg;
-  msg (MSG::INFO) << "initialize() successful in " << name() << endmsg;
-  return StatusCode::SUCCESS;
-}
-
-//================ Finalisation =================================================
-
-StatusCode InDet::ZVTOP_Tool::finalize()
-{
-  StatusCode sc = AlgTool::finalize();
-  return sc;
-}
-
-//============================================================================================
-//VxContainer* InDet::ZVTOP_Tool::findVertex(const TrackCollection* trackTES) --David S.
-std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*>
-InDet::ZVTOP_Tool::findVertex(const TrackCollection* trackTES) const
-{
-//VxContainer* newVxContainer = new VxContainer; --David S.
-xAOD::VertexContainer* newVertexContainer = new xAOD::VertexContainer;
-xAOD::VertexAuxContainer* newVertexAuxContainer = new xAOD::VertexAuxContainer;
-newVertexContainer->setStore( newVertexAuxContainer );
-if (!trackTES->empty()) {
-  //some variables
-  typedef DataVector<Trk::Track>::const_iterator TrackDataVecIter;
-  const Trk::RecVertex beam_spot = m_iBeamCondSvc->beamVtx();
-
-  // new Fitter EDM takes xAOD::Vertex instead of Trk::RecVertex as beam_spot constraint, so create one out of beamVtx() --David S.
-  xAOD::Vertex theconstraint = xAOD::Vertex(); // Default constructor creates a private store
-  theconstraint.setPosition( beam_spot.position() );
-  theconstraint.setCovariancePosition( beam_spot.covariancePosition() );
-  theconstraint.setFitQuality( beam_spot.fitQuality().chiSquared(), beam_spot.fitQuality().doubleNumberDoF() );
-
-  std::vector<const Trk::Track*> trkColl(0); // the collection of tracks, which are assigned to one spatial point
-  std::vector<InDet::ZVTOP_VertexState*> vtxState_org(0);// vector of tracks and vertices, tracks can be assigned to more than one vertex, these ambiguities will be resolved later
-  std::multimap<double, InDet::ZVTOP_VertexState*> vtxProb_map;
-  //---------------------------------------------------------------------------//  
-  //-------step1: find spatial points & calculate vtx probabilities-------//
-  //--------------------------------------------------------------------------//
-
-  std::vector< std::vector<InDet::ZVTOP_VertexState*> > vertex_objects(0); //vector of vtx candidate & track collection pairs
-  
-  if (msgLvl(MSG::DEBUG)) msg() << "step ONE search for the spatial points, number of tracks = "<<(*trackTES).size() <<  endmsg;
-  for (TrackDataVecIter itr_1  = (*trackTES).begin(); itr_1 != (*trackTES).end()-1; itr_1++)
-  {
-    double sum_TrkProbTube = 0.;
-    double sum2_TrkProbTube = 0.;
-    double vtxProb = 0.;
-    // trk-trk combination
-    for (TrackDataVecIter itr_2 = itr_1+1; itr_2 != (*trackTES).end(); itr_2++)
-    {
-      Trk::Vertex* spatialPoint;
-      spatialPoint = m_iSpatialPointFinder->findSpatialPoint((*itr_1),(*itr_2));
-      if (spatialPoint != nullptr) 
-      {
-         double TrkProbTube_1 = m_iTrkProbTubeCalc->calcProbTube(*(*itr_1),*spatialPoint);
-         double TrkProbTube_2 = m_iTrkProbTubeCalc->calcProbTube(*(*itr_2),*spatialPoint);
-         sum_TrkProbTube = TrkProbTube_1 + TrkProbTube_2;
-         sum2_TrkProbTube = pow(TrkProbTube_1,2.) + pow(TrkProbTube_2,2.);
-         if (sum_TrkProbTube != 0. )
-         { 
-            vtxProb = m_iVtxProbCalc->calcVtxProb(sum_TrkProbTube, sum2_TrkProbTube);
-            trkColl.push_back((*itr_1));
-            trkColl.push_back((*itr_2));
-            bool beam_spot = false;
-            if (vtxProb > m_vtxProb_cut) vtxState_org.push_back(new InDet::ZVTOP_VertexState(vtxProb, *spatialPoint, beam_spot, trkColl ));
-            trkColl.clear();
-         }
-      }
-      delete spatialPoint;
-    }
-    //trk-IP combination
-    Trk::Vertex* spatialPoint = nullptr;
-    spatialPoint = m_iSpatialPointFinder->findSpatialPoint(beam_spot,(*itr_1));
-    if (spatialPoint != nullptr) 
-    {
-      double BeamProbTube = m_iTrkProbTubeCalc->calcProbTube(beam_spot,*spatialPoint);
-      double TrkProbTube = m_iTrkProbTubeCalc->calcProbTube(*(*itr_1),*spatialPoint);
-      sum_TrkProbTube = BeamProbTube + TrkProbTube;
-      sum2_TrkProbTube = pow(TrkProbTube,2.) + pow(BeamProbTube,2.);
-      if (sum_TrkProbTube != 0. ) 
-      {
-         vtxProb = m_iVtxProbCalc->calcVtxProb(sum_TrkProbTube, sum2_TrkProbTube);
-         trkColl.push_back((*itr_1));
-         bool beam_spot = true;
-         if (vtxProb > m_vtxProb_cut) vtxState_org.push_back(new InDet::ZVTOP_VertexState(vtxProb, *spatialPoint, beam_spot, trkColl ));
-         trkColl.clear();
-      }
-    }
-    delete spatialPoint;
-  }
-  if (msgLvl(MSG::DEBUG)) msg() << " number of spatial points = "<<vtxState_org.size()<<endmsg;
-  //reduce the spatial point collection
-  typedef std::vector<InDet::ZVTOP_VertexState*>::iterator Sp_Iter;
-  std::vector< InDet::ZVTOP_VertexState*> vtxState;
-  for (Sp_Iter itr1 = vtxState_org.begin(); itr1 != vtxState_org.end(); itr1++)
-  {
-
-     if (vtxState.empty()) vtxState.push_back(*itr1);
-     else {
-         Trk::Vertex vtx_new = (*itr1)->vertex();
-         bool can_be_resolved = false;
-         for (Sp_Iter itr2 = vtxState.begin(); itr2 != vtxState.end(); itr2++)
-        {
-           Trk::Vertex vtx_in = (*itr2)->vertex();
-            double r_diff = sqrt(pow(vtx_new.position().x(),2.) + pow(vtx_new.position().y(),2.)) - sqrt(pow(vtx_in.position().x(),2.) + pow(vtx_in.position().y(),2.));
-            double z_diff = vtx_new.position().z() - vtx_in.position().z();
-            if (fabs(r_diff) > 0.001 && fabs(z_diff) > 0.001 && r_diff != 0. && z_diff != 0.) can_be_resolved = true;
-            else {
-                for (unsigned int trk_itr = 0; trk_itr < (*itr1)->tracks().size(); trk_itr++) (*itr2)->tracks().push_back((*itr1)->tracks()[trk_itr]); 
-                can_be_resolved = false;
-                break;
-            }
-         }
-         if (can_be_resolved)  vtxState.push_back(*itr1);
-      }
-   }
-   for (Sp_Iter itr_sort = vtxState.begin();  itr_sort!= vtxState.end(); itr_sort++)  vtxProb_map.insert(std::multimap<double, InDet::ZVTOP_VertexState*>::value_type((*itr_sort)->vtx_prob(), *itr_sort));
-
-
-//-------------------------------------------------------------------------------//
-//----step2: vertex clustering, aim: to cluster all vertices together, ----//
-//----which can not be resolved. The found vertex seeds and ---------//
-//----associated tracks are taken as an input for the vertex fit. --------//
-//------------------------------------------------------------------------------//
-
-
-  if (!vtxState.empty() ){
-    if (msgLvl(MSG::DEBUG)) msg() << " step TWO vertex clustering, number of reduced vertices = "<<vtxState.size()<< endmsg;
-    //sort the vtxState collection, starting with a highest vtx probability
-    std::vector<InDet::ZVTOP_VertexState*> vtxState_sorted;
-    unsigned int IP_counter = 0;
-    std::multimap<double, InDet::ZVTOP_VertexState*>::reverse_iterator s= vtxProb_map.rbegin();
-    for (;  s!=vtxProb_map.rend();  s++)  {
-           InDet::ZVTOP_VertexState* vtx_state = (*s).second;
-           if (vtx_state->beam_spot()) IP_counter += 1;
-           if (IP_counter > 1) vtx_state->set_beam_spot(false);
-           vtxState_sorted.push_back(vtx_state);
-     }
-    //store first element in the vertex_objects ---->vector<vector<VertexState>>
-    std::vector<InDet::ZVTOP_VertexState*> vtx_coll;
-    vtx_coll.push_back(*(vtxState_sorted.begin()));
-    vertex_objects.push_back(vtx_coll);//store first seed
-    std::vector< InDet::ZVTOP_VertexState*>  vtxState_new(vtxState_sorted); //copy of the vtxState_sorted
-    vtxState_new.erase(vtxState_new.begin()); // without first element
-    //loop over vtxState_sorted
-    for (Sp_Iter org_itr= vtxState_sorted.begin(); org_itr != vtxState_sorted.end(); org_itr++)
-    {
-       Trk::Vertex seed = (*org_itr)->vertex();
-        //found where the seed is already stored
-        bool vtx_is_stored = false;
-        unsigned int vertex_objectsPosition = 0; 
-        for (unsigned int vertex_objectsItr = 0; vertex_objectsItr!= vertex_objects.size(); vertex_objectsItr++)
-        {
-          //stored vertices in the line vertex_objectsItr
-          std::vector<InDet::ZVTOP_VertexState*> stored_vertices = vertex_objects[vertex_objectsItr];
-           //---->inner loop
-          for (unsigned int stored_vtx_itr = 0; stored_vtx_itr!= stored_vertices.size(); stored_vtx_itr++)
-          {
-              Trk::Vertex storedVtx = stored_vertices[stored_vtx_itr]->vertex();
-              double diff = ((*org_itr)->vertex().position().x() - storedVtx.position().x()) + ((*org_itr)->vertex().position().y() - storedVtx.position().y()) + ((*org_itr)->vertex().position().z() - storedVtx.position().z());
-              if (fabs(diff) < 0.0001)
-              {
-                 vertex_objectsPosition = vertex_objectsItr;
-                 vtx_is_stored = true;
-                 break; // break inner loop if found
-              }
-            }
-            if (vtx_is_stored) break; // break outer loop if found
-         }
-         if (!vtx_is_stored) {
-                 //if not stored
-                std::vector<InDet::ZVTOP_VertexState*> new_vtx_coll;
-                new_vtx_coll.push_back(*org_itr);
-                vertex_objects.push_back(new_vtx_coll);
-                vertex_objectsPosition = vertex_objects.size() - 1;
-         }
-         for (Sp_Iter new_itr = vtxState_new.begin(); new_itr!= vtxState_new.end(); new_itr++)
-         {
-             Trk::Vertex cand = (*new_itr)->vertex();
-             //calculate the vtx prob function for this seed
-             std::multimap<double, Trk::Vertex > vtx_prob_coll;
-             vtx_prob_coll.insert(std::multimap<double, Trk::Vertex >::value_type((*new_itr)->vtx_prob(),(*new_itr)->vertex()));
-             vtx_prob_coll.insert(std::multimap<double, Trk::Vertex >::value_type((*org_itr)->vtx_prob(),(*org_itr)->vertex()));
-             for (double alpha = m_resolvingStep; alpha <1.; alpha += m_resolvingStep)
-             {
-                 Trk::Vertex SP_line = Trk::Vertex((*org_itr)->vertex().position() + alpha*((*new_itr)->vertex().position() - (*org_itr)->vertex().position()));
-                  double sum_TrkProbTube = 0.;
-                  double sum2_TrkProbTube = 0.;
-                  for (TrackDataVecIter trk_itr = (*trackTES).begin(); trk_itr != (*trackTES).end(); trk_itr++)
-                  {
-	              double TrkProbTube = 0.;
-                      TrkProbTube = m_iTrkProbTubeCalc->calcProbTube(*(*trk_itr),SP_line);
-                       sum_TrkProbTube += TrkProbTube;
-                       sum2_TrkProbTube += pow(TrkProbTube,2.);
-                   }
-                   double BeamProbTube = m_iTrkProbTubeCalc->calcProbTube(beam_spot,SP_line);
-                   sum_TrkProbTube += BeamProbTube;
-                   sum2_TrkProbTube += pow(BeamProbTube,2.);
-                   double vtx_prob = m_iVtxProbCalc->calcVtxProb(sum_TrkProbTube, sum2_TrkProbTube);
-                    vtx_prob_coll.insert(std::multimap<double, Trk::Vertex >::value_type(vtx_prob, SP_line));
-               }
-              double vtx_prob_ratio = (*vtx_prob_coll.begin()).first/(*new_itr)->vtx_prob();
-                if (vtx_prob_ratio >= m_resolvingCut)  {
-                       //check if the vertices can be resolved
-                       vertex_objects[vertex_objectsPosition].push_back(*new_itr);
-                       vtxState_new.erase(new_itr);
-                       if (new_itr != vtxState_new.end()) --new_itr;
-                       if (new_itr == vtxState_new.end()) break;
-                }
-             }
-      }//loop over orig reduced coll
-   }//if spatial point collection size > 0
-
-
-   //--------------------------------------------------------------------------------//
-  //--------------------step3: call vertex fitter----------------------------------//
-  //--------------------------------------------------------------------------------//
-
-    if (msgLvl(MSG::DEBUG)) msg() << " step THREE, vertex fit, vertex_objects size = "<<vertex_objects.size()<< endmsg;
-    //std::vector<Trk::VxCandidate* > theVxContainer; --David S.
-    std::vector< xAOD::Vertex* > theVertexContainer;
-    //prepare trk coll --> remove double tracks
-    std::vector<std::vector<InDet::ZVTOP_VertexState*> >::iterator vtx_itr = vertex_objects.begin();
-    for (; vtx_itr!= vertex_objects.end(); vtx_itr++)
-    {
-      bool with_beam_spot = false;
-      std::vector <const Trk::Track*> trk_coll(0); //--->trk_coll for the fit
-      std::vector<InDet::ZVTOP_VertexState*>::iterator itr = (*vtx_itr).begin();
-      trk_coll.push_back((*itr)->tracks()[0]);
-      for (; itr != (*vtx_itr).end(); itr++)
-      { 
-        for ( std::vector <const Trk::Track*>::iterator vs_itr = ((*itr)->tracks()).begin(); vs_itr!= ((*itr)->tracks()).end(); vs_itr++)
-        {
-          bool found = false;
-	  for (std::vector <const Trk::Track*>::iterator trk_itr = trk_coll.begin();  trk_itr!= trk_coll.end(); trk_itr++)  {
-             if (*vs_itr == *trk_itr)  found = true;
-          }
-          if (!found)  trk_coll.push_back(*vs_itr);
-        }
-       if ((*itr)->beam_spot()) with_beam_spot = true;
-       }
-       //call the fitter
-       //Trk::VxCandidate * myVxCandidate(0); --David S.
-       xAOD::Vertex * myxAODVertex(nullptr);
-       //if (with_beam_spot) myVxCandidate = m_iVertexFitter->fit(trk_coll,beam_spot); --David S.
-       if (with_beam_spot) myxAODVertex = m_iVertexFitter->fit(trk_coll,theconstraint);
-       //else myVxCandidate = m_iVertexFitter->fit(trk_coll); --David S.
-       else myxAODVertex = m_iVertexFitter->fit(trk_coll);
-       bool bad_chi2 = true;
-       //if (myVxCandidate) { --David S.
-       if (myxAODVertex) {
-          while (bad_chi2)
-          {
-             //std::vector< Trk::VxTrackAtVertex*> trkAtVtx = *(myVxCandidate->vxTrackAtVertex()); --David S.
-             std::vector< Trk::VxTrackAtVertex > trkAtVtx = myxAODVertex->vxTrackAtVertex();
-             //std::vector< Trk::VxTrackAtVertex*>::iterator trkAtVtx_Iter = trkAtVtx.begin(); --David S.
-             std::vector< Trk::VxTrackAtVertex >::iterator trkAtVtx_Iter = trkAtVtx.begin();
-             std::vector< const Trk::Track*>::iterator trk_Iter = trk_coll.begin();
-             double largest_chi2 = 0.;
-             std::vector< const Trk::Track*>::iterator index;
-             for (; trkAtVtx_Iter!= trkAtVtx.end(); trkAtVtx_Iter++)
-             {
-               double chi2 = (*trkAtVtx_Iter).trackQuality().chiSquared();
-               if (chi2 > largest_chi2) {
-                   largest_chi2 = chi2;
-                   index = trk_Iter;
-               }
-               trk_Iter++;
-             }
-             if (largest_chi2 > m_trk_chi2_cut)
-             {
-               if (trk_coll.size() < 3) break;
-               
-                  trk_coll.erase(index);
-                  if (trk_coll.size() >= 2) {
-                    //if (myVxCandidate!=0) { delete myVxCandidate; myVxCandidate=0; } --David S.
-                    if (myxAODVertex!=nullptr) { delete myxAODVertex; myxAODVertex=nullptr; }
-                    //if (with_beam_spot) myVxCandidate = m_iVertexFitter->fit(trk_coll, beam_spot); --David S.
-                    if (with_beam_spot) myxAODVertex = m_iVertexFitter->fit(trk_coll, theconstraint);
-                    //else myVxCandidate = m_iVertexFitter->fit(trk_coll); --David S.
-                    else myxAODVertex = m_iVertexFitter->fit(trk_coll);
-                  }
-                  //if (myVxCandidate == 0) break; --David S.
-                  if (myxAODVertex == nullptr) break;
-               
-             } else bad_chi2 = false;
-           }
-      }
-      //if (myVxCandidate && bad_chi2 == false && with_beam_spot) newVxContainer->push_back(myVxCandidate); --David S.
-      if (myxAODVertex && !bad_chi2 && with_beam_spot) newVertexContainer->push_back(myxAODVertex);
-      //if (myVxCandidate && bad_chi2 == false && !with_beam_spot) theVxContainer.push_back(myVxCandidate); --David S.
-      if (myxAODVertex && !bad_chi2 && !with_beam_spot) theVertexContainer.push_back(myxAODVertex);
-    }
-    //if (msgLvl(MSG::DEBUG)) msg() <<"vertex container size = "<<theVxContainer.size()<<endmsg; --David S.
-    if (msgLvl(MSG::DEBUG)) msg() << "vertex container size = " << theVertexContainer.size() << endmsg;
-
-   //ambiguity solving for two track vertices
-   //typedef std::vector<Trk::VxCandidate* >::iterator theVxContainerIter; --David S.
-   typedef std::vector< xAOD::Vertex* >::iterator theVertexContainerIter;
-   //theVxContainerIter iter = theVxContainer.begin(); --David S.
-   theVertexContainerIter iter = theVertexContainer.begin();
-   //theVxContainerIter iter_end = theVxContainer.end(); --David S.
-   theVertexContainerIter iter_end = theVertexContainer.end();
-   //std::vector<Trk::VxCandidate*> twoTrkContainer(0); --David S.
-   std::vector< xAOD::Vertex* > twoTrkContainer(0);
-   for (; iter!= iter_end; iter++)
-   {
-     //Trk::VxCandidate* theVxCandidate(*iter); --David S.
-     xAOD::Vertex* thexAODVertex(*iter);
-     //if (theVxCandidate->vxTrackAtVertex()->size() == 2 ) twoTrkContainer.push_back(theVxCandidate); --David S.
-     if (thexAODVertex->vxTrackAtVertex().size() == 2 ) twoTrkContainer.push_back(thexAODVertex);
-     //else newVxContainer->push_back(theVxCandidate); --David S.
-     else newVertexContainer->push_back(thexAODVertex);
-   }
-   //std::vector<Trk::VxCandidate*>::iterator twoTrk_itr = twoTrkContainer.begin(); --David S.
-   std::vector< xAOD::Vertex* >::iterator twoTrk_itr = twoTrkContainer.begin();
-   for (; twoTrk_itr!= twoTrkContainer.end(); twoTrk_itr++)
-   {
-     // TODO: make sure that links are actually set in VxTrackAtVertices! --David S.
-     //Trk::ITrackLink* trklink1 = (*(*twoTrk_itr)->vxTrackAtVertex())[0]->trackOrParticleLink(); --David S.
-     Trk::ITrackLink* trklink1 = (*twoTrk_itr)->vxTrackAtVertex()[0].trackOrParticleLink();
-     Trk::LinkToTrack* linkToTrack1 = dynamic_cast<Trk::LinkToTrack*>(trklink1);
-     const Trk::Track* first_trk = linkToTrack1->cachedElement();
-     //double first_trk_chi2 = (*(*twoTrk_itr)->vxTrackAtVertex())[0]->trackQuality().chiSquared(); --David S.
-     double first_trk_chi2 = (*twoTrk_itr)->vxTrackAtVertex()[0].trackQuality().chiSquared();
-     //Trk::ITrackLink* trklink2 = (*(*twoTrk_itr)->vxTrackAtVertex())[1]->trackOrParticleLink(); --David S.
-     Trk::ITrackLink* trklink2 = (*twoTrk_itr)->vxTrackAtVertex()[1].trackOrParticleLink();
-     Trk::LinkToTrack* linkToTrack2 = dynamic_cast<Trk::LinkToTrack*>(trklink2);
-     const Trk::Track* second_trk = linkToTrack2->cachedElement();
-     //double second_trk_chi2 = (*(*twoTrk_itr)->vxTrackAtVertex())[1]->trackQuality().chiSquared(); --David S.
-     double second_trk_chi2 = (*twoTrk_itr)->vxTrackAtVertex()[1].trackQuality().chiSquared();
-     
-     //VxContainer::iterator Citer = newVxContainer->begin(); --David S.
-     xAOD::VertexContainer::iterator Citer = newVertexContainer->begin();
-     //VxContainer::iterator Citer_end = newVxContainer->end(); --David S.
-     xAOD::VertexContainer::iterator Citer_end = newVertexContainer->end();
-     bool first_found = false;
-     bool second_found = false;
-     ////loop over all VxCandidates --David S.
-     //loop over all Vertices
-     for (; Citer != Citer_end; Citer++)
-     {
-       //unsigned int size = (*Citer)->vxTrackAtVertex()->size(); --David S.
-       unsigned int size = (*Citer)->vxTrackAtVertex().size();
-       for (unsigned int counter = 0; counter < size; counter++)
-       {  
-         // TODO: make sure that links are actually set in VxTrackAtVertices! --David S.
-         //Trk::ITrackLink* trklink = (*(*Citer)->vxTrackAtVertex())[counter]->trackOrParticleLink(); --David S.
-         Trk::ITrackLink* trklink = (*Citer)->vxTrackAtVertex()[counter].trackOrParticleLink();
-         Trk::LinkToTrack* linkToTrack = dynamic_cast<Trk::LinkToTrack*>(trklink);
-         const Trk::Track* trk= linkToTrack->cachedElement();
-         //double trk_chi2 = (*(*Citer)->vxTrackAtVertex())[counter]->trackQuality().chiSquared(); --David S.
-         double trk_chi2 = (*Citer)->vxTrackAtVertex()[counter].trackQuality().chiSquared();
-         if (trk == first_trk && trk_chi2 < first_trk_chi2 ) first_found = true;
-         if (trk == second_trk && trk_chi2 < second_trk_chi2) second_found = true;
-        }
-     }
-     //if (first_found==false && second_found==false) newVxContainer->push_back(*twoTrk_itr); --David S.
-     if (!first_found && !second_found) newVertexContainer->push_back(*twoTrk_itr);
-     else delete *twoTrk_itr;
-   //}//end loop over two track Vx Candidates --David S.
-   }//end loop over two track Vertices
-   //if (msgLvl(MSG::DEBUG)) msg() <<"new VxContainer size = "<<newVxContainer->size()<<endmsg; --David S.
-   if (msgLvl(MSG::DEBUG)) msg() << "new VertexContainer size = " << newVertexContainer->size() << endmsg;
-   for (Sp_Iter iter = vtxState_org.begin(); iter != vtxState_org.end(); iter++) delete *iter;
-} else {
-    if (msgLvl(MSG::DEBUG)) msg() <<"No tracks in this event, provide to the next event" <<  endmsg;
-  }
-
-//return newVxContainer; --David S.
-return std::make_pair(newVertexContainer, newVertexAuxContainer);
-}
-
-std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*>
-InDet::ZVTOP_Tool::findVertex(
-  const xAOD::TrackParticleContainer* trackParticles) const
-{
-     if(msgLvl(MSG::DEBUG)){
-       msg(MSG::DEBUG) << "N=" << trackParticles->size()
-                       << " xAOD::TrackParticles found" << endmsg;
-       msg(MSG::DEBUG) << "No ZVTOP_Tool implementation for xAOD::TrackParticle"
-                       << endmsg; 
-     } 
-     xAOD::VertexContainer *xAODContainer(nullptr);
-     xAOD::VertexAuxContainer *xAODAuxContainer(nullptr);   
-     return std::make_pair(xAODContainer, xAODAuxContainer); 
-}
-
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_TrkPartBaseVertexState.cxx b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_TrkPartBaseVertexState.cxx
deleted file mode 100644
index a31df49cf99ae32ae044703349d7e273834f1c72..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_TrkPartBaseVertexState.cxx
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/***************************************************************************
-     ZVTOP_TrkPartBaseVertexState.cxx  -  Description
-                             -------------------
-    authors : Tatjana Lenz <tatjana.lenz@cern.ch>
- ***************************************************************************/
-#include "InDetZVTOPVxFinder/ZVTOP_TrkPartBaseVertexState.h"
-#include "TrkParticleBase/TrackParticleBase.h"
-
-
-namespace InDet {
-
-  ZVTOP_TrkPartBaseVertexState::ZVTOP_TrkPartBaseVertexState():m_vtx_prob(),m_vertex(),m_beam_spot(), m_tracks(0){}
-
-  ZVTOP_TrkPartBaseVertexState::ZVTOP_TrkPartBaseVertexState(double& vtx_prob, Trk::Vertex& vertex, bool& beam_spot, std::vector<const Trk::TrackParticleBase*>& tracks): m_vtx_prob(vtx_prob), m_vertex(vertex), m_beam_spot(beam_spot), m_tracks(tracks){}
-
-  ZVTOP_TrkPartBaseVertexState::ZVTOP_TrkPartBaseVertexState(const  ZVTOP_TrkPartBaseVertexState& vs):
-  m_vtx_prob(vs.m_vtx_prob),
-  m_vertex(vs.m_vertex),
-  m_beam_spot(vs.m_beam_spot),
-  m_tracks(vs.m_tracks)
-  {
-    
-  }
-  ZVTOP_TrkPartBaseVertexState::~ZVTOP_TrkPartBaseVertexState() {}
-} // end of namespace
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_TrkPartVertexState.cxx b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_TrkPartVertexState.cxx
deleted file mode 100644
index 6c05a6f4b8978c7e27c2510ad358196c9f10bf46..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_TrkPartVertexState.cxx
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/***************************************************************************
-                           ZVTOP_TrkPartVertexState.cxx  -  Description
-                             -------------------
-    authors : Tatjana Lenz <tatjana.lenz@cern.ch>
- ***************************************************************************/
-
-#include "InDetZVTOPVxFinder/ZVTOP_TrkPartVertexState.h"
-#include "Particle/TrackParticle.h"
-
-namespace InDet {
-
-  ZVTOP_TrkPartVertexState::ZVTOP_TrkPartVertexState():m_vtx_prob(),m_vertex(),m_IP(), m_tracks(0){}
-
-  ZVTOP_TrkPartVertexState::ZVTOP_TrkPartVertexState(double& vtx_prob, Trk::Vertex& vertex, bool& IP, std::vector<const Rec::TrackParticle*>& tracks): m_vtx_prob(vtx_prob), m_vertex(vertex), m_IP(IP), m_tracks(tracks){}
-
-  ZVTOP_TrkPartVertexState::ZVTOP_TrkPartVertexState(const  ZVTOP_TrkPartVertexState& vs):
-  m_vtx_prob(vs.m_vtx_prob),
-  m_vertex(vs.m_vertex),
-  m_IP(vs.m_IP),
-  m_tracks(vs.m_tracks)
-  {
-         
-  }
-  ZVTOP_TrkPartVertexState::~ZVTOP_TrkPartVertexState() {}
-} // end of namespace
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_TrkProbTubeCalc.cxx b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_TrkProbTubeCalc.cxx
deleted file mode 100755
index ea50ad0fcaaf7130f7eb5e9be8b14075f8960d01..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_TrkProbTubeCalc.cxx
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// ZVTOP_TrkProbTubeCalc.cxx, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#include "InDetZVTOPVxFinder/ZVTOP_TrkProbTubeCalc.h"
-#include "TrkSurfaces/PerigeeSurface.h"
-#include "TrkParameters/TrackParameters.h"
-#include "VxVertex/Vertex.h"
-#include "CLHEP/Matrix/SymMatrix.h"
-#include "CLHEP/Matrix/Vector.h"
-#include "EventPrimitives/EventPrimitives.h"
-#include "TrkExInterfaces/IExtrapolator.h"
-#include <cmath>
-
-//================ Constructor =================================================
-
-InDet::ZVTOP_TrkProbTubeCalc::ZVTOP_TrkProbTubeCalc(const std::string& t,
-			  const std::string& n,
-			  const IInterface*  p )
-  :
-  base_class(t,n,p)
-{
-  //  template for property declaration
-  declareProperty("Extrapolator",		m_extrapolator);
-}
-
-//================ Destructor =================================================
-
-InDet::ZVTOP_TrkProbTubeCalc::~ZVTOP_TrkProbTubeCalc()
-{}
-
-
-//================ Initialisation =================================================
-
-StatusCode InDet::ZVTOP_TrkProbTubeCalc::initialize()
-{  
-  /* Get the right extrapolator tool from ToolSvc */
-  ATH_CHECK( m_extrapolator.retrieve() );
-  ATH_MSG_DEBUG( "initialize() successful");
-  return StatusCode::SUCCESS;
-}
-
-//================ Finalisation =================================================
-
-StatusCode InDet::ZVTOP_TrkProbTubeCalc::finalize()
-{
-  return StatusCode::SUCCESS;
-}
-
-//============================================================================================
-double InDet::ZVTOP_TrkProbTubeCalc::calcProbTube(const Trk::Track& trk, Trk::Vertex& vec) const
-{
-  double probTube = 0.;
-  //perigee surface 
-  const Trk::Perigee* trkPer(dynamic_cast<const Trk::Perigee*>(trk.perigeeParameters()));
-  if (not trkPer) return 0.;
-  probTube = calcProbTube(trkPer, vec);
-  return probTube;
-}
-
-//============================================================================================
-double InDet::ZVTOP_TrkProbTubeCalc::calcProbTube(const Trk::RecVertex& beam_spot, Trk::Vertex& vec) const
-{
-  double probTube = 0.;
-  Amg::Vector3D diff; 
-  diff[0]= beam_spot.position()[0] - vec.position()[0];
-  diff[1]= beam_spot.position()[1] - vec.position()[1];
-  diff[2]= beam_spot.position()[2] - vec.position()[2];
-  AmgMatrix(3,3) beam_spot_weight = beam_spot.covariancePosition().inverse();
-  probTube = std::exp(-0.5*diff.transpose()*beam_spot_weight*diff);
-  return probTube;
-}
-//============================================================================================
-double InDet::ZVTOP_TrkProbTubeCalc::calcProbTube(const Rec::TrackParticle& trk, Trk::Vertex& vec) const
-{
-  double probTube = 0.;
-  const Trk::Perigee* trkPer(trk.measuredPerigee());
-  probTube = calcProbTube(trkPer,vec);
-  return probTube;
-}
-
-double InDet::ZVTOP_TrkProbTubeCalc::calcProbTube(const Trk::TrackParticleBase& trk, Trk::Vertex& vec) const
-{
-  double probTube = 0.;
-  //perigee surface 
-  const Trk::Perigee* trkPer = dynamic_cast<const Trk::Perigee*>(&(trk.definingParameters()));
-  if (not trkPer) return 0;
-  probTube = calcProbTube(trkPer,vec);
-  return probTube;
-}
-
-double InDet::ZVTOP_TrkProbTubeCalc::calcProbTube(const Trk::Perigee* trkPer, Trk::Vertex& vec) const {
-
-  double probTube = 0.;
-  const Amg::Vector3D& lp =vec.position();
-  Trk::PerigeeSurface perigeeSurface(lp);
-  double f_phi0 = trkPer->parameters()[Trk::phi0];
-  double f_theta = trkPer->parameters()[Trk::theta];
-  double f_qOverP = trkPer->parameters()[Trk::qOverP];
-  Trk::Perigee * extrapolatedPerigee(const_cast<Trk::Perigee*>(dynamic_cast<const Trk::Perigee*>(m_extrapolator->extrapolateDirectly(*trkPer, perigeeSurface))));
-  if (extrapolatedPerigee) {
-    AmgVector(5) diff;
-    diff[0]= extrapolatedPerigee->parameters()[Trk::d0];
-    diff[1]= extrapolatedPerigee->parameters()[Trk::z0];
-    diff[2]= extrapolatedPerigee->parameters()[Trk::phi0] - f_phi0;
-    diff[3]= extrapolatedPerigee->parameters()[Trk::theta] - f_theta;
-    diff[4]= extrapolatedPerigee->parameters()[Trk::qOverP] - f_qOverP;
-    if (extrapolatedPerigee->covariance() != nullptr) {
-      AmgMatrix(5,5) exp_perigee_weight = (*extrapolatedPerigee->covariance()).inverse();
-      probTube = std::exp(-0.5*diff.transpose()*exp_perigee_weight*diff);
-    } else {
-      ATH_MSG_DEBUG( "extrapolateted perigee has NO information on the covariance matrix" );
-    }
-  } else {
-    ATH_MSG_DEBUG( "Perigee was not extrapolated!" );
-  }
-  delete extrapolatedPerigee;
-  return probTube;
-}
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_VertexState.cxx b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_VertexState.cxx
deleted file mode 100755
index 2747211ab030395a5d21458dd8293da23b19d371..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/ZVTOP_VertexState.cxx
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/***************************************************************************
-                           ZVTOP_VertexState.cxx  -  Description
-                             -------------------
-    authors : Tatjana Lenz <tatjana.lenz@cern.ch>
- ***************************************************************************/
-
-#include "InDetZVTOPVxFinder/ZVTOP_VertexState.h"
-#include "TrkTrack/Track.h"
-
-namespace InDet {
-
-  ZVTOP_VertexState::ZVTOP_VertexState():m_vtx_prob(),m_vertex(),m_beam_spot(), m_tracks(0){}
-
-  ZVTOP_VertexState::ZVTOP_VertexState(double& vtx_prob, Trk::Vertex& vertex, bool& beam_spot, std::vector<const Trk::Track*>& tracks): m_vtx_prob(vtx_prob), m_vertex(vertex), m_beam_spot(beam_spot), m_tracks(tracks){}
-
-  ZVTOP_VertexState::ZVTOP_VertexState(const  ZVTOP_VertexState& vs):
-  m_vtx_prob(vs.m_vtx_prob),
-  m_vertex(vs.m_vertex),
-  m_beam_spot(vs.m_beam_spot),
-  m_tracks(vs.m_tracks)
-  {
-         
-  }
-  ZVTOP_VertexState::~ZVTOP_VertexState() {}
-} // end of namespace
diff --git a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/components/InDetZVTOPVxFinder_entries.cxx b/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/components/InDetZVTOPVxFinder_entries.cxx
deleted file mode 100644
index 390f7cfe8c9d453d03f7ffd9f8b0c9012a9611cb..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetRecTools/InDetZVTOPVxFinder/src/components/InDetZVTOPVxFinder_entries.cxx
+++ /dev/null
@@ -1,16 +0,0 @@
-#include "InDetZVTOPVxFinder/ZVTOP_Tool.h"
-#include "InDetZVTOPVxFinder/ZVTOP_SecVtxTool.h"
-#include "InDetZVTOPVxFinder/ZVTOP_SpatialPointFinder.h"
-#include "InDetZVTOPVxFinder/ZVTOP_SlowSpatialPointFinder.h"
-#include "InDetZVTOPVxFinder/ZVTOP_TrkProbTubeCalc.h"
-#include "InDetZVTOPVxFinder/ZVTOP_SimpleVtxProbCalc.h"
-#include "InDetZVTOPVxFinder/ZVTOP_AmbiguitySolver.h"
-
-DECLARE_COMPONENT( InDet::ZVTOP_Tool )
-DECLARE_COMPONENT( InDet::ZVTOP_SecVtxTool )
-DECLARE_COMPONENT( InDet::ZVTOP_SpatialPointFinder )
-DECLARE_COMPONENT( InDet::ZVTOP_SlowSpatialPointFinder )
-DECLARE_COMPONENT( InDet::ZVTOP_TrkProbTubeCalc )
-DECLARE_COMPONENT( InDet::ZVTOP_SimpleVtxProbCalc )
-DECLARE_COMPONENT( InDet::ZVTOP_AmbiguitySolver )
-