23 #include "GaudiKernel/ServiceHandle.h"
24 #include "GaudiKernel/ToolHandle.h"
42 class TrackParticleBase;
44 class IVertexSeedFinder;
45 class IImpactPoint3dEstimator;
46 class IVertexLinearizedTrackFactory;
51 class IInDetTrackSelectionTool;
54 :
public extends<AthAlgTool, IAdaptiveMultiSecVertexFinder>
60 using extends::extends;
73 std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> findVertex(
76 void setPrimaryVertexPosition(
double,
double,
double)
override;
79 std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> doVertexing(
const std::vector<Trk::ITrackLink*>& trackVector);
81 void countTracksAndNdf(
xAOD::Vertex* myxAODVertex,
float&
ndf,
int& ntracks)
const;
83 int removeTracksFromSeeds(
xAOD::Vertex* actualCandidate, std::vector<Trk::ITrackLink*>& seedTracks)
const;
84 void removeClosestTrack(
Amg::Vector3D& seedVertex, std::vector<Trk::ITrackLink*>& seedTracks,
int& nFound)
const;
86 bool V0check(
const std::vector<Amg::Vector3D>& momenta,
const Amg::Vector3D& posi)
const;
87 const std::vector<Amg::Vector3D> getVertexMomenta(
xAOD::Vertex* myxAODVertex)
const;
90 ToolHandle<Trk::AdaptiveMultiVertexFitter> m_VertexFitter{
this,
"VertexFitterTool",
"Trk::AdaptiveMultiVertexFitter",
"Multi Vertex Fitter"};
91 ToolHandle<InDet::IInDetTrackSelectionTool> m_trkFilter{
this,
"BaseTrackSelector",
"InDet::DetailedTrackSelectToolRelax",
"Base track selection tool"};
92 ToolHandle<InDet::IInDetTrackSelectionTool> m_SVtrkFilter{
this,
"SecVtxTrackSelector",
"InDet::SecVtxTrackSelector",
"SV track selection tool"};
94 ToolHandle<Trk::IVertexSeedFinder> m_SeedFinder{
this,
"SeedFinder",
"Trk::IndexedCrossDistancesSeedFinder",
"Seed finder"};
95 ToolHandle<Trk::IImpactPoint3dEstimator> m_ImpactPoint3dEstimator{
this,
"ImpactPoint3dEstimator",
"Trk::ImpactPoint3dEstimator",
"Impact point estimator"};
98 FloatProperty m_privtxRef{
this,
"MomentumProjectionOnDirection", -999999.9,
"pri vtx ref"};
99 DoubleProperty m_significanceCutSeeding{
this,
"significanceCutSeeding", 10,
"significanceCutSeeding"};
100 DoubleProperty m_minWghtAtVtx{
this,
"minTrackWeightAtVtx", 0.,
"minTrackWeightAtVtx"};
101 DoubleProperty m_maxIterations{
this,
"maxVertices", 25,
"max iterations"};