diff --git a/Tracking/Acts/ActsPriVtxFinder/ActsPriVtxFinder/ActsAdaptiveMultiPriVtxFinderTool.h b/Tracking/Acts/ActsPriVtxFinder/ActsPriVtxFinder/ActsAdaptiveMultiPriVtxFinderTool.h index f9d0aeeb4dedc64a68c209eac470dc0784557112..b32e90916b8e29a501600519db2ae2c9a976ebd3 100644 --- a/Tracking/Acts/ActsPriVtxFinder/ActsPriVtxFinder/ActsAdaptiveMultiPriVtxFinderTool.h +++ b/Tracking/Acts/ActsPriVtxFinder/ActsPriVtxFinder/ActsAdaptiveMultiPriVtxFinderTool.h @@ -15,9 +15,9 @@ #include "TrkTrackLink/ITrackLink.h" #include "InDetTrackSelectionTool/IInDetTrackSelectionTool.h" #include "TrkTrack/LinkToTrack.h" +#include "InDetRecToolInterfaces/IVertexFinder.h" // PACKAGE -#include "ActsPriVtxFinderInterfaces/IActsPriVtxFinderTool.h" #include "ActsGeometryInterfaces/IActsTrackingGeometryTool.h" #include "ActsGeometry/ActsGeometryContext.h" #include "ActsGeometry/ATLASMagneticFieldWrapper.h" @@ -53,7 +53,7 @@ class BoundaryCheck; } -class ActsAdaptiveMultiPriVtxFinderTool : public extends<AthAlgTool, IActsPriVtxFinderTool> +class ActsAdaptiveMultiPriVtxFinderTool : public extends<AthAlgTool, InDet::IVertexFinder> { // Track wrapper input for the Acts vertexing @@ -81,19 +81,16 @@ public: const IInterface* parent); virtual std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> - findVertex(const TrackCollection* trackTES, const EventContext& ctx) const override; + findVertex(const EventContext& ctx, const TrackCollection* trackTES) const override; virtual std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> - findVertex(const Trk::TrackParticleBaseCollection* trackTES, const EventContext& ctx) const override; - - virtual std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> - findVertex(const xAOD::TrackParticleContainer* trackParticles, const EventContext& ctx) const override; + findVertex(const EventContext& ctx, const xAOD::TrackParticleContainer* trackParticles) const override; private: std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> - findVertex(const std::vector<const Trk::ITrackLink*>& trackVector, const EventContext& ctx) const; + findVertex(const EventContext& ctx, const std::vector<const Trk::ITrackLink*>& trackVector) const; Trk::Perigee* actsBoundToTrkPerigee( const Acts::BoundParameters& bound, const Acts::Vector3D& surfCenter) const; diff --git a/Tracking/Acts/ActsPriVtxFinder/CMakeLists.txt b/Tracking/Acts/ActsPriVtxFinder/CMakeLists.txt index 6e603783970712b3941f0cb8e299f1a777d8fd19..678d2334b1bea5a430d3384d60dfd0ff315073dc 100644 --- a/Tracking/Acts/ActsPriVtxFinder/CMakeLists.txt +++ b/Tracking/Acts/ActsPriVtxFinder/CMakeLists.txt @@ -22,7 +22,6 @@ atlas_depends_on_subdirs( PUBLIC GaudiKernel MagneticField/MagFieldInterfaces Calorimeter/CaloDetDescr - Tracking/Acts/ActsPriVtxFinderInterfaces Tracking/Acts/ActsInterop Tracking/TrkEvent/TrkTrackLink Tracking/TrkEvent/TrkLinks @@ -34,7 +33,7 @@ atlas_depends_on_subdirs( PUBLIC Tracking/TrkEvent/TrkTrack Tracking/TrkEvent/VxVertex Tracking/TrkVertexFitter/TrkVertexFitterInterfaces - Tracking/ActsPriVtxFinderInterfaces) + InnerDetector/InDetRecTools/InDetRecToolInterfaces ) # External dependencies: find_package( CLHEP ) @@ -69,7 +68,7 @@ atlas_add_library( ActsPriVtxFinderLib VxVertex TrkVertexFitterInterfaces AthenaMonitoringKernelLib - ActsPriVtxFinderInterfacesLib) + InDetRecToolInterfaces ) atlas_add_component( ActsPriVtxFinder src/*.cxx @@ -95,7 +94,7 @@ atlas_add_component( ActsPriVtxFinder VxVertex TrkVertexFitterInterfaces AthenaMonitoringKernelLib - ActsPriVtxFinderInterfacesLib) + InDetRecToolInterfaces ) # Install files from the package: atlas_install_headers( ActsPriVtxFinder ) diff --git a/Tracking/Acts/ActsPriVtxFinder/src/ActsAdaptiveMultiPriVtxFinderTool.cxx b/Tracking/Acts/ActsPriVtxFinder/src/ActsAdaptiveMultiPriVtxFinderTool.cxx index fc4f1d60b62f868c7a0b80be2618f795c27dbd30..7282e9b8673f86ad780fea61d37b4a1b4080420b 100755 --- a/Tracking/Acts/ActsPriVtxFinder/src/ActsAdaptiveMultiPriVtxFinderTool.cxx +++ b/Tracking/Acts/ActsPriVtxFinder/src/ActsAdaptiveMultiPriVtxFinderTool.cxx @@ -38,7 +38,6 @@ namespace operator < (const VertexAndSignalComp& other) const {return second > other.second;} }; - } //anonymous namespace ActsAdaptiveMultiPriVtxFinderTool::ActsAdaptiveMultiPriVtxFinderTool(const std::string& type, const std::string& name, @@ -194,19 +193,19 @@ ActsAdaptiveMultiPriVtxFinderTool::initialize() } std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> -ActsAdaptiveMultiPriVtxFinderTool::findVertex(const TrackCollection* trackTES, const EventContext& ctx) const +ActsAdaptiveMultiPriVtxFinderTool::findVertex(const EventContext& ctx, const TrackCollection* trackTES) const { - SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey, ctx}; - const Trk::RecVertex& beamposition(beamSpotHandle->beamVtx()); + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey, ctx}; + const Trk::RecVertex& beamposition(beamSpotHandle->beamVtx()); - std::vector<const Trk::ITrackLink*> selectedTracks; + std::vector<const Trk::ITrackLink*> selectedTracks; - typedef DataVector<Trk::Track>::const_iterator TrackDataVecIter; + typedef DataVector<Trk::Track>::const_iterator TrackDataVecIter; - bool selectionPassed; - for (TrackDataVecIter itr = (*trackTES).begin(); itr != (*trackTES).end(); itr++) { - if (m_useBeamConstraint) { - selectionPassed = static_cast<bool>(m_trkFilter->accept(**itr, &beamposition)); + bool selectionPassed; + for (TrackDataVecIter itr = (*trackTES).begin(); itr != (*trackTES).end(); itr++) { + if (m_useBeamConstraint) { + selectionPassed = static_cast<bool>(m_trkFilter->accept(**itr, &beamposition)); } else { Trk::Vertex null(Amg::Vector3D(0, 0, 0)); selectionPassed = static_cast<bool>(m_trkFilter->accept(**itr, &null)); @@ -218,73 +217,34 @@ ActsAdaptiveMultiPriVtxFinderTool::findVertex(const TrackCollection* trackTES, linkTT->setStorableObject(*trackTES); selectedTracks.push_back(linkTT); } -} - -std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> returnContainers = findVertex(selectedTracks, ctx); - -for(auto& trk : selectedTracks){ - delete trk; -} - -return returnContainers; -} - -std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> -ActsAdaptiveMultiPriVtxFinderTool::findVertex(const Trk::TrackParticleBaseCollection* trackTES, const EventContext& ctx) const -{ - - - std::vector<const Trk::ITrackLink*> selectedTracks; - - SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey, ctx}; - const Trk::RecVertex &beamposition(beamSpotHandle->beamVtx()); - - typedef DataVector<Trk::TrackParticleBase>::const_iterator TrackParticleDataVecIter; - - bool selectionPassed; - for (TrackParticleDataVecIter itr = (*trackTES).begin(); itr != (*trackTES).end(); itr++) { - if (m_useBeamConstraint) { - selectionPassed = static_cast<bool>(m_trkFilter->accept(*((*itr)->originalTrack()), &beamposition)); - } else { - Trk::Vertex null(Amg::Vector3D(0, 0, 0)); - selectionPassed = static_cast<bool>(m_trkFilter->accept(*((*itr)->originalTrack()), &null)); // TODO: change trkFilter? - } - - if (selectionPassed) { - ElementLink<Trk::TrackParticleBaseCollection> link; - link.setElement(const_cast<Trk::TrackParticleBase*>(*itr)); - Trk::LinkToTrackParticleBase* linkTT = new Trk::LinkToTrackParticleBase(link); - linkTT->setStorableObject(*trackTES); - selectedTracks.push_back(linkTT); - } -} + } -std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> returnContainers = findVertex(selectedTracks, ctx); + std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> returnContainers = findVertex(ctx, selectedTracks); -for(auto& trk : selectedTracks){ - delete trk; -} + for(auto& trk : selectedTracks){ + delete trk; + } -return returnContainers; + return returnContainers; } std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> -ActsAdaptiveMultiPriVtxFinderTool::findVertex(const xAOD::TrackParticleContainer* trackParticles, const EventContext& ctx) const +ActsAdaptiveMultiPriVtxFinderTool::findVertex(const EventContext& ctx, const xAOD::TrackParticleContainer* trackParticles) const { - std::vector<const Trk::ITrackLink*> selectedTracks; - SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey, ctx}; - xAOD::Vertex beamposition; - beamposition.makePrivateStore(); - beamposition.setPosition(beamSpotHandle->beamVtx().position()); - beamposition.setCovariancePosition(beamSpotHandle->beamVtx().covariancePosition()); + std::vector<const Trk::ITrackLink*> selectedTracks; + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey, ctx}; + xAOD::Vertex beamposition; + beamposition.makePrivateStore(); + beamposition.setPosition(beamSpotHandle->beamVtx().position()); + beamposition.setCovariancePosition(beamSpotHandle->beamVtx().covariancePosition()); - typedef DataVector<xAOD::TrackParticle>::const_iterator TrackParticleDataVecIter; + typedef DataVector<xAOD::TrackParticle>::const_iterator TrackParticleDataVecIter; - bool selectionPassed; - for (TrackParticleDataVecIter itr = (*trackParticles).begin(); itr != (*trackParticles).end(); itr++) { - if (m_useBeamConstraint) { - selectionPassed = static_cast<bool>(m_trkFilter->accept(**itr, &beamposition)); + bool selectionPassed; + for (TrackParticleDataVecIter itr = (*trackParticles).begin(); itr != (*trackParticles).end(); itr++) { + if (m_useBeamConstraint) { + selectionPassed = static_cast<bool>(m_trkFilter->accept(**itr, &beamposition)); } else { xAOD::Vertex null; null.makePrivateStore(); @@ -302,16 +262,16 @@ ActsAdaptiveMultiPriVtxFinderTool::findVertex(const xAOD::TrackParticleContainer linkTT->setStorableObject(*trackParticles); selectedTracks.push_back(linkTT); } -} + } -std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> returnContainers = findVertex(selectedTracks, ctx); + std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> returnContainers = findVertex(ctx, selectedTracks); -return returnContainers; + return returnContainers; } std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> -ActsAdaptiveMultiPriVtxFinderTool::findVertex(const std::vector<const Trk::ITrackLink*>& trackVector, const EventContext& ctx) const +ActsAdaptiveMultiPriVtxFinderTool::findVertex(const EventContext& ctx, const std::vector<const Trk::ITrackLink*>& trackVector) const { using namespace Acts::UnitLiterals; @@ -357,22 +317,22 @@ ActsAdaptiveMultiPriVtxFinderTool::findVertex(const std::vector<const Trk::ITrac , 0. , 0. , 0. , 0., 0., 1.; allTracks.emplace_back((*trkiter),Acts::BoundParameters(geoContext, covMat, actsParams, perigeeSurface)); -} + } -std::vector<const TrackWrapper*> allTrackPtrs; -for(const auto& trk : allTracks){ - allTrackPtrs.push_back(&trk); -} + std::vector<const TrackWrapper*> allTrackPtrs; + for(const auto& trk : allTracks){ + allTrackPtrs.push_back(&trk); + } -Acts::VertexingOptions<TrackWrapper> vertexingOptions(geoContext, - magFieldContext); + Acts::VertexingOptions<TrackWrapper> vertexingOptions(geoContext, + magFieldContext); -if(!m_useBeamConstraint){ - beamSpotConstraintVtx.setPosition(Acts::Vector3D::Zero()); - beamSpotConstraintVtx.setCovariance(Acts::ActsSymMatrixD<3>::Zero()); -} + if(!m_useBeamConstraint){ + beamSpotConstraintVtx.setPosition(Acts::Vector3D::Zero()); + beamSpotConstraintVtx.setCovariance(Acts::ActsSymMatrixD<3>::Zero()); + } -vertexingOptions.vertexConstraint = beamSpotConstraintVtx; + vertexingOptions.vertexConstraint = beamSpotConstraintVtx; // TODO: change when available //VertexFinder::State finderState; @@ -442,10 +402,6 @@ vertexingOptions.vertexConstraint = beamSpotConstraintVtx; } for(unsigned int i = 0; i < vtxList.size(); i++){ - // TODO: can I add the vertex here to the container and the aux store - // is still filled with all needed data? - // See example below for dummy vertex where it's different, but I made private - // store above...? auto vtx = vtxList[i].first; theVertexContainer->push_back(vtx); if(i == 0){ diff --git a/Tracking/Acts/ActsPriVtxFinderInterfaces/ActsPriVtxFinderInterfaces/IActsPriVtxFinderTool.h b/Tracking/Acts/ActsPriVtxFinderInterfaces/ActsPriVtxFinderInterfaces/IActsPriVtxFinderTool.h deleted file mode 100644 index 391690fa470cdb40db468cc3529746853b7b5da7..0000000000000000000000000000000000000000 --- a/Tracking/Acts/ActsPriVtxFinderInterfaces/ActsPriVtxFinderInterfaces/IActsPriVtxFinderTool.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ACTSPRIVTXFINDERINTERFACES_IACTSPRIVTXFINDERTOOL_H -#define ACTSPRIVTXFINDERINTERFACES_IACTSPRIVTXFINDERTOOL_H - -#include "AthenaBaseComps/AthAlgTool.h" -#include "GaudiKernel/IInterface.h" -#include "GaudiKernel/IAlgTool.h" -#include "GaudiKernel/EventContext.h" -//#include "ActsGeometry/ActsGeometryContext.h" - - -#include "xAODTracking/VertexContainerFwd.h" -#include "xAODTracking/TrackParticleContainerFwd.h" -#include "xAODTracking/VertexAuxContainer.h" -#include "TrkTrack/TrackCollection.h" -#include "TrkParticleBase/TrackParticleBaseCollection.h" - -class IActsPriVtxFinderTool : virtual public IAlgTool { - public: - - DeclareInterfaceID(IActsPriVtxFinderTool, 1, 0); - - virtual std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> - findVertex(const TrackCollection* trackTES, const EventContext& ctx) const = 0; - - virtual std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> - findVertex(const Trk::TrackParticleBaseCollection* trackTES, const EventContext& ctx) const = 0; - - virtual std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> - findVertex(const xAOD::TrackParticleContainer* trackParticles, const EventContext& ctx) const = 0; - -}; - -#endif diff --git a/Tracking/Acts/ActsPriVtxFinderInterfaces/CMakeLists.txt b/Tracking/Acts/ActsPriVtxFinderInterfaces/CMakeLists.txt deleted file mode 100644 index 845f83309c5e756c12b1ca2feec348142daa69e0..0000000000000000000000000000000000000000 --- a/Tracking/Acts/ActsPriVtxFinderInterfaces/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -# Declare the package name: -atlas_subdir( ActsPriVtxFinderInterfaces ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - PRIVATE - Control/StoreGate - AthenaKernel - AthenaBaseComps - GaudiKernel - ActsInterop - Event/xAOD/xAODTracking - Tracking/TrkEvent/TrkParameters - Tracking/TrkEvent/TrkParticleBase - Tracking/TrkEvent/TrkTrack - Tracking/TrkEvent/VxVertex ) - -# External dependencies: -find_package( Eigen ) -find_package( Acts COMPONENTS Core ) - -# Component(s) in the package: - -atlas_add_library( ActsPriVtxFinderInterfacesLib - ActsPriVtxFinderInterfaces/*.h - INTERFACE - PUBLIC_HEADERS ActsPriVtxFinderInterfaces - INCLUDE_DIRS ${EIGEN_INCLUDE_DIRS} - LINK_LIBRARIES ${EIGEN_LIBRARIES} - AthenaKernel - ActsInteropLib - ActsCore - xAODTracking - TrkParameters - TrkParticleBase - TrkTrack VxVertex) -