ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetRecTools
InDetAdaptiveMultiSecVtxFinderTool
src
InDetAdaptiveMultiSecVtxFinderTool.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2019-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
// Author: Neza Ribaric <neza.ribaric@cern.ch>
5
6
/***************************************************************************
7
InDetAdaptiveMultiSecVtxFinderTool.cxx - Description
8
-------------------
9
begin : 01-12-2022
10
authors : Neza Ribaric ( Lancaster University )
11
information : Tool for Secondary Vertex Finding using AdaptiveMultivertexFitter and InDetTrackSelection
12
***************************************************************************
13
14
*
15
* This class provides an implementation for a secondary
16
* vertex finding tool, which uses the Adaptive Multi Vertex
17
* Fitter to find and fit multiple secondary vertices.
18
*
19
***************************************************************************/
20
21
#include "
AthenaBaseComps/AthAlgTool.h
"
22
#include "
CxxUtils/checker_macros.h
"
23
#include "GaudiKernel/ServiceHandle.h"
24
#include "GaudiKernel/ToolHandle.h"
25
#include "
InDetRecToolInterfaces/IInDetAdaptiveMultiSecVtxFinderTool.h
"
26
#include "
InDetRecToolInterfaces/IVertexFinder.h
"
27
#include "
InDetTrackSelectionTool/IInDetTrackSelectionTool.h
"
28
#include "
TrkParameters/TrackParameters.h
"
29
#include "
TrkParticleBase/TrackParticleBaseCollection.h
"
// type def ...
30
#include "
TrkTrack/TrackCollection.h
"
// type def ...
31
#include "
TrkVertexFitterInterfaces/IImpactPoint3dEstimator.h
"
32
#include "
TrkVertexFitterInterfaces/IVertexSeedFinder.h
"
33
#include "
TrkVertexFitters/AdaptiveMultiVertexFitter.h
"
34
#include "
xAODTracking/TrackParticleContainerFwd.h
"
35
#include "
xAODTracking/TrackParticleFwd.h
"
36
#include "
xAODTracking/VertexContainerFwd.h
"
37
#include "
xAODTracking/VertexFwd.h
"
38
39
#include <utility>
40
namespace
Trk
{
41
42
class
Track
;
43
class
TrackParticleBase
;
44
class
ITrackLink
;
45
class
IVertexSeedFinder
;
46
class
IImpactPoint3dEstimator
;
47
class
IVertexLinearizedTrackFactory
;
48
}
// namespace Trk
49
//
50
//
51
namespace
InDet
{
52
class
IInDetTrackSelectionTool
;
53
54
class
ATLAS_NOT_THREAD_SAFE
InDetAdaptiveMultiSecVtxFinderTool
55
:
public
extends<AthAlgTool, IAdaptiveMultiSecVertexFinder>
// mutable variables are used without protection.
56
{
57
public
:
61
using
extends::extends;
62
63
InDetAdaptiveMultiSecVtxFinderTool
(
const
std::string& t,
const
std::string& n,
const
IInterface* p);
64
68
69
virtual
~InDetAdaptiveMultiSecVtxFinderTool
() =
default
;
70
71
StatusCode
initialize
()
override
;
72
StatusCode
finalize
()
override
;
73
74
std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*>
findVertex
(
75
const
xAOD::TrackParticleContainer
* trackParticles)
override
;
76
77
void
setPrimaryVertexPosition
(
double
,
double
,
double
)
override
;
78
79
private
:
80
std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*>
doVertexing
(
const
std::vector<Trk::ITrackLink*>& trackVector);
81
float
findCompatibleTracks
(
const
EventContext& ctx,
Amg::Vector3D
& seedVertex,
Trk::ITrackLink
* trkIter)
const
;
82
void
countTracksAndNdf
(
xAOD::Vertex
* myxAODVertex,
float
& ndf,
int
& ntracks)
const
;
83
bool
checkFit
(
xAOD::Vertex
* actualCandidate)
const
;
84
int
removeTracksFromSeeds
(
xAOD::Vertex
* actualCandidate, std::vector<Trk::ITrackLink*>& seedTracks)
const
;
85
void
removeClosestTrack
(
const
EventContext& ctx,
Amg::Vector3D
& seedVertex, std::vector<Trk::ITrackLink*>& seedTracks,
int
& nFound)
const
;
86
87
bool
V0check
(
const
std::vector<Amg::Vector3D>& momenta,
const
Amg::Vector3D
& posi)
const
;
88
const
std::vector<Amg::Vector3D>
getVertexMomenta
(
xAOD::Vertex
* myxAODVertex)
const
;
89
90
91
ToolHandle<Trk::AdaptiveMultiVertexFitter>
m_VertexFitter
{
this
,
"VertexFitterTool"
,
"Trk::AdaptiveMultiVertexFitter"
,
"Multi Vertex Fitter"
};
92
ToolHandle<InDet::IInDetTrackSelectionTool>
m_trkFilter
{
this
,
"BaseTrackSelector"
,
"InDet::DetailedTrackSelectToolRelax"
,
"Base track selection tool"
};
93
ToolHandle<InDet::IInDetTrackSelectionTool>
m_SVtrkFilter
{
this
,
"SecVtxTrackSelector"
,
"InDet::SecVtxTrackSelector"
,
"SV track selection tool"
};
94
95
ToolHandle<Trk::IVertexSeedFinder>
m_SeedFinder
{
this
,
"SeedFinder"
,
"Trk::IndexedCrossDistancesSeedFinder"
,
"Seed finder"
};
96
ToolHandle<Trk::IImpactPoint3dEstimator>
m_ImpactPoint3dEstimator
{
this
,
"ImpactPoint3dEstimator"
,
"Trk::ImpactPoint3dEstimator"
,
"Impact point estimator"
};
97
98
// declareInterface<IAdaptiveMultiSecVertexFinder>(this);
99
FloatProperty
m_privtxRef
{
this
,
"MomentumProjectionOnDirection"
, -999999.9,
"pri vtx ref"
};
100
DoubleProperty
m_significanceCutSeeding
{
this
,
"significanceCutSeeding"
, 10,
"significanceCutSeeding"
};
101
DoubleProperty
m_minWghtAtVtx
{
this
,
"minTrackWeightAtVtx"
, 0.,
"minTrackWeightAtVtx"
};
102
DoubleProperty
m_maxIterations
{
this
,
"maxVertices"
, 25,
"max iterations"
};
103
Amg::Vector3D
m_privtx
;
104
105
};
// end of class definitions
106
}
// namespace InDet
AdaptiveMultiVertexFitter.h
AthAlgTool.h
IImpactPoint3dEstimator.h
IInDetAdaptiveMultiSecVtxFinderTool.h
IInDetTrackSelectionTool.h
IVertexFinder.h
IVertexSeedFinder.h
TrackCollection.h
TrackParticleBaseCollection.h
TrackParticleContainerFwd.h
TrackParticleFwd.h
TrackParameters.h
VertexContainerFwd.h
VertexFwd.h
checker_macros.h
Define macros for attributes used to control the static checker.
ATLAS_NOT_THREAD_SAFE
#define ATLAS_NOT_THREAD_SAFE
getNoisyStrip() Find noisy strips from hitmaps and write out into xml/db formats
Definition
checker_macros.h:212
InDet::IInDetTrackSelectionTool
Interface for track selection tool.
Definition
IInDetTrackSelectionTool.h:52
InDet::InDetAdaptiveMultiSecVtxFinderTool::m_trkFilter
ToolHandle< InDet::IInDetTrackSelectionTool > m_trkFilter
Definition
InDetAdaptiveMultiSecVtxFinderTool.h:92
InDet::InDetAdaptiveMultiSecVtxFinderTool::m_SeedFinder
ToolHandle< Trk::IVertexSeedFinder > m_SeedFinder
Definition
InDetAdaptiveMultiSecVtxFinderTool.h:95
InDet::InDetAdaptiveMultiSecVtxFinderTool::doVertexing
std::pair< xAOD::VertexContainer *, xAOD::VertexAuxContainer * > doVertexing(const std::vector< Trk::ITrackLink * > &trackVector)
Definition
InDetAdaptiveMultiSecVtxFinderTool.cxx:124
InDet::InDetAdaptiveMultiSecVtxFinderTool::m_SVtrkFilter
ToolHandle< InDet::IInDetTrackSelectionTool > m_SVtrkFilter
Definition
InDetAdaptiveMultiSecVtxFinderTool.h:93
InDet::InDetAdaptiveMultiSecVtxFinderTool::m_ImpactPoint3dEstimator
ToolHandle< Trk::IImpactPoint3dEstimator > m_ImpactPoint3dEstimator
Definition
InDetAdaptiveMultiSecVtxFinderTool.h:96
InDet::InDetAdaptiveMultiSecVtxFinderTool::m_VertexFitter
ToolHandle< Trk::AdaptiveMultiVertexFitter > m_VertexFitter
Definition
InDetAdaptiveMultiSecVtxFinderTool.h:91
InDet::InDetAdaptiveMultiSecVtxFinderTool::m_maxIterations
DoubleProperty m_maxIterations
Definition
InDetAdaptiveMultiSecVtxFinderTool.h:102
InDet::InDetAdaptiveMultiSecVtxFinderTool::finalize
StatusCode finalize() override
Definition
InDetAdaptiveMultiSecVtxFinderTool.cxx:440
InDet::InDetAdaptiveMultiSecVtxFinderTool::countTracksAndNdf
void countTracksAndNdf(xAOD::Vertex *myxAODVertex, float &ndf, int &ntracks) const
Definition
InDetAdaptiveMultiSecVtxFinderTool.cxx:442
InDet::InDetAdaptiveMultiSecVtxFinderTool::getVertexMomenta
const std::vector< Amg::Vector3D > getVertexMomenta(xAOD::Vertex *myxAODVertex) const
Definition
InDetAdaptiveMultiSecVtxFinderTool.cxx:457
InDet::InDetAdaptiveMultiSecVtxFinderTool::~InDetAdaptiveMultiSecVtxFinderTool
virtual ~InDetAdaptiveMultiSecVtxFinderTool()=default
Destructor.
InDet::InDetAdaptiveMultiSecVtxFinderTool::InDetAdaptiveMultiSecVtxFinderTool
InDetAdaptiveMultiSecVtxFinderTool(const std::string &t, const std::string &n, const IInterface *p)
Definition
InDetAdaptiveMultiSecVtxFinderTool.cxx:58
InDet::InDetAdaptiveMultiSecVtxFinderTool::removeTracksFromSeeds
int removeTracksFromSeeds(xAOD::Vertex *actualCandidate, std::vector< Trk::ITrackLink * > &seedTracks) const
Definition
InDetAdaptiveMultiSecVtxFinderTool.cxx:501
InDet::InDetAdaptiveMultiSecVtxFinderTool::V0check
bool V0check(const std::vector< Amg::Vector3D > &momenta, const Amg::Vector3D &posi) const
Definition
InDetAdaptiveMultiSecVtxFinderTool.cxx:604
InDet::InDetAdaptiveMultiSecVtxFinderTool::checkFit
bool checkFit(xAOD::Vertex *actualCandidate) const
Definition
InDetAdaptiveMultiSecVtxFinderTool.cxx:484
InDet::InDetAdaptiveMultiSecVtxFinderTool::setPrimaryVertexPosition
void setPrimaryVertexPosition(double, double, double) override
Definition
InDetAdaptiveMultiSecVtxFinderTool.cxx:436
InDet::InDetAdaptiveMultiSecVtxFinderTool::m_privtx
Amg::Vector3D m_privtx
Definition
InDetAdaptiveMultiSecVtxFinderTool.h:103
InDet::InDetAdaptiveMultiSecVtxFinderTool::findVertex
std::pair< xAOD::VertexContainer *, xAOD::VertexAuxContainer * > findVertex(const xAOD::TrackParticleContainer *trackParticles) override
Definition
InDetAdaptiveMultiSecVtxFinderTool.cxx:83
InDet::InDetAdaptiveMultiSecVtxFinderTool::m_significanceCutSeeding
DoubleProperty m_significanceCutSeeding
Definition
InDetAdaptiveMultiSecVtxFinderTool.h:100
InDet::InDetAdaptiveMultiSecVtxFinderTool::m_minWghtAtVtx
DoubleProperty m_minWghtAtVtx
Definition
InDetAdaptiveMultiSecVtxFinderTool.h:101
InDet::InDetAdaptiveMultiSecVtxFinderTool::findCompatibleTracks
float findCompatibleTracks(const EventContext &ctx, Amg::Vector3D &seedVertex, Trk::ITrackLink *trkIter) const
Definition
InDetAdaptiveMultiSecVtxFinderTool.cxx:527
InDet::InDetAdaptiveMultiSecVtxFinderTool::removeClosestTrack
void removeClosestTrack(const EventContext &ctx, Amg::Vector3D &seedVertex, std::vector< Trk::ITrackLink * > &seedTracks, int &nFound) const
Definition
InDetAdaptiveMultiSecVtxFinderTool.cxx:560
InDet::InDetAdaptiveMultiSecVtxFinderTool::m_privtxRef
FloatProperty m_privtxRef
Definition
InDetAdaptiveMultiSecVtxFinderTool.h:99
Trk::IImpactPoint3dEstimator
Definition
IImpactPoint3dEstimator.h:38
Trk::ITrackLink
An abstract class which is meant to represent an element link to the Trk::Track or Trk::TrackParticle...
Definition
ITrackLink.h:26
Trk::IVertexLinearizedTrackFactory
An Abstract Base Class for the LinearizedTrackFactories.
Definition
IVertexLinearizedTrackFactory.h:66
Trk::IVertexSeedFinder
An abstract base class for implementation of Linearization point finders.
Definition
IVertexSeedFinder.h:47
Trk::TrackParticleBase
Definition
TrackParticleBase.h:41
Trk::Track
The ATLAS Track class.
Definition
Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition
GeoPrimitives.h:47
InDet
Primary Vertex Finder.
Definition
VP1ErrorUtils.h:36
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
xAOD::Vertex
Vertex_v1 Vertex
Define the latest version of the vertex class.
Definition
Event/xAOD/xAODTracking/xAODTracking/Vertex.h:16
xAOD::TrackParticleContainer
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
Definition
Event/xAOD/xAODTracking/xAODTracking/TrackParticleContainer.h:14
initialize
void initialize()
Definition
run_EoverP.cxx:894
Generated on
for ATLAS Offline Software by
1.17.0