ATLAS Offline Software
Loading...
Searching...
No Matches
AdaptiveVertexFitter.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRKADAPTIVEFITTERTOOLS_ADAPTIVEVERTEXFITTER_H
6#define TRKADAPTIVEFITTERTOOLS_ADAPTIVEVERTEXFITTER_H
7
9#include "GaudiKernel/ToolHandle.h"
11
12// xAOD includes
15#include "xAODTracking/Vertex.h"
16
24
25namespace Trk {
26class Track;
28class VxTrackAtVertex;
29
85
86class AdaptiveVertexFitter : public extends<AthAlgTool, IVertexFitter>
87{
88public:
89 // The following 'using' can be removed when IVertexFitter::fit has been fully
90 // migrated to the one with the EventContext
92
93 virtual StatusCode initialize() override;
94
95 // same kind error as FullVertexFitter code to be similar in error response -
96 // NOT IMPLEMENTED YET enum FitError
97 // {FITOK,MATINV,NEGTRCHI2,MAXCHI2,MAXTRCHI2,NOTRKS,NOFIT};
98
102 AdaptiveVertexFitter(const std::string& t, const std::string& n, const IInterface* p);
103
107
109
113 virtual std::unique_ptr<xAOD::Vertex> fit(const EventContext& ctx,
114 const std::vector<const xAOD::TrackParticle*>& vectorTrk,
115 const std::vector<const xAOD::NeutralParticle*>& vectorNeut,
116 const Amg::Vector3D& startingPoint) const override;
117 virtual std::unique_ptr<xAOD::Vertex> fit(const EventContext& ctx,
118 const std::vector<const xAOD::TrackParticle*>& vectorTrk,
119 const Amg::Vector3D& startingPoint) const override
120 {
121 return fit(ctx, vectorTrk, std::vector<const xAOD::NeutralParticle*>(), startingPoint);
122 };
123
128 virtual std::unique_ptr<xAOD::Vertex> fit(const EventContext& ctx,
129 const std::vector<const xAOD::TrackParticle*>& vectorTrk,
130 const std::vector<const xAOD::NeutralParticle*>& vectorNeut,
131 const xAOD::Vertex& constraint) const override;
132 virtual std::unique_ptr<xAOD::Vertex> fit(const EventContext& ctx,
133 const std::vector<const xAOD::TrackParticle*>& vectorTrk,
134 const xAOD::Vertex& constraint) const override
135 {
136 return fit(ctx, vectorTrk, std::vector<const xAOD::NeutralParticle*>(), constraint);
137 };
138
142 virtual std::unique_ptr<xAOD::Vertex> fit(const EventContext& ctx,
143 const std::vector<const Trk::TrackParameters*>& perigeeList,
144 const std::vector<const Trk::NeutralParameters*>& neutralPerigeeList,
145 const Amg::Vector3D& startingPoint) const override;
146 virtual std::unique_ptr<xAOD::Vertex> fit(const EventContext& ctx,
147 const std::vector<const Trk::TrackParameters*>& perigeeList,
148 const Amg::Vector3D& startingPoint) const override;
149
153 virtual std::unique_ptr<xAOD::Vertex> fit(const EventContext& ctx,
154 const std::vector<const Trk::TrackParameters*>& perigeeList,
155 const std::vector<const Trk::NeutralParameters*>& neutralPerigeeList,
156 const xAOD::Vertex& constraint) const override;
157 virtual std::unique_ptr<xAOD::Vertex> fit(const EventContext& ctx,
158 const std::vector<const Trk::TrackParameters*>& perigeeList,
159 const xAOD::Vertex& constraint) const override;
160
164
165 std::unique_ptr<xAOD::Vertex> fit(const EventContext& ctx,
166 const std::vector<const Trk::Track*>& Vectortrk,
167 const xAOD::Vertex& constraint,
168 const Amg::Vector3D& startingPoint) const;
169
173
174 std::unique_ptr<xAOD::Vertex> fit(const EventContext& ctx,
175 const std::vector<const Trk::TrackParameters*>& perigeeList,
176 const std::vector<const Trk::NeutralParameters*>& neutralPerigeeList,
177 const xAOD::Vertex& constraint,
178 const Amg::Vector3D& startingPoint) const;
179 std::unique_ptr<xAOD::Vertex> fit(const EventContext& ctx,
180 const std::vector<const Trk::TrackParameters*>& perigeeList,
181 const xAOD::Vertex& constraint,
182 const Amg::Vector3D& startingPoint) const;
183
187
188 std::unique_ptr<xAOD::Vertex> fit(
189 const EventContext& ctx,
190 const std::vector<const Trk::TrackParameters*>& perigeeList,
191 const std::vector<const Trk::NeutralParameters*>& neutralPerigeeList) const override;
192 std::unique_ptr<xAOD::Vertex> fit(const EventContext& ctx,
193 const std::vector<const Trk::TrackParameters*>& perigeeList) const override;
194
198
199 std::unique_ptr<xAOD::Vertex> fit(const EventContext& ctx, const std::vector<const Trk::TrackParticleBase*>& perigeeList) const;
200
201private:
206 std::unique_ptr<xAOD::Vertex> _fit(
207 const std::vector<const Trk::TrackParameters*>& perigeeList,
208 const std::vector<const Trk::NeutralParameters*>& neutralPerigeeList =
209 std::vector<const Trk::NeutralParameters*>(),
210 const xAOD::Vertex& constraint = xAOD::Vertex(),
211 const Amg::Vector3D& startingPoint = Amg::Vector3D(),
212 bool IsConstraint = false,
213 bool IsStartingPoint = false) const;
214 std::unique_ptr<xAOD::Vertex> _fit(
215 const std::vector<const Trk::TrackParameters*>& perigeeList,
216 const xAOD::Vertex& constraint = xAOD::Vertex(),
217 const Amg::Vector3D& startingPoint = Amg::Vector3D(),
218 bool IsConstraint = false,
219 bool IsStartingPoint = false) const;
220
225
226 std::unique_ptr<xAOD::Vertex> _fit(
227 const std::vector<const Trk::Track*>& VectorTrk,
228 const xAOD::Vertex& constraint = xAOD::Vertex(),
229 const Amg::Vector3D& startingPoint = Amg::Vector3D(),
230 bool IsConstraint = false,
231 bool IsStartingPoint = false) const;
232
238
239 std::unique_ptr<xAOD::Vertex> dothefit(const xAOD::Vertex& ConstraintVertex,
240 const Amg::Vector3D& SeedVertex,
241 std::vector<VxTrackAtVertex>& myLinTracks) const;
242
243 ToolHandle<Trk::IVertexSeedFinder> m_SeedFinder{
244 this,
245 "SeedFinder",
246 "Trk::CrossDistancesSeedFinder"
247 };
248 ToolHandle<Trk::IVertexLinearizedTrackFactory> m_LinearizedTrackFactory{
249 this,
250 "LinearizedTrackFactory",
251 "Trk::FullLinearizedTrackFactory"
252 };
253 ToolHandle<Trk::IVertexTrackCompatibilityEstimator>
255 "TrackCompatibilityEstimato",
256 "Trk::Chi2TrackCompatibilityEstimator" };
257 ToolHandle<Trk::IImpactPoint3dEstimator> m_ImpactPoint3dEstimator{
258 this,
259 "ImpactPoint3dEstimator",
260 "Trk::ImpactPoint3dEstimator/ImpactPoint3dEstimator"
261 };
262 ToolHandle<Trk::IVertexUpdator> m_VertexUpdator{ this,
263 "VertexUpdator",
264 "Trk::KalmanVertexUpdator" };
265 ToolHandle<Trk::IVertexSmoother> m_VertexSmoother{
266 this,
267 "VertexSmoother",
268 "Trk::DummyVertexSmoother"
269 };
270 ToolHandle<Trk::IVertexAnnealingMaker> m_AnnealingMaker{
271 this,
272 "AnnealingMaker",
273 "Trk::DetAnnealingMaker"
274 };
275
279
281
286
288
294
296
302
304
309
311};
312}
313
314#endif
virtual ~AdaptiveVertexFitter()
destructor
std::unique_ptr< xAOD::Vertex > _fit(const std::vector< const Trk::TrackParameters * > &perigeeList, const std::vector< const Trk::NeutralParameters * > &neutralPerigeeList=std::vector< const Trk::NeutralParameters * >(), const xAOD::Vertex &constraint=xAOD::Vertex(), const Amg::Vector3D &startingPoint=Amg::Vector3D(), bool IsConstraint=false, bool IsStartingPoint=false) const
Internal method for fitting a list of TrackParameters and NeutralParameters, with or without constrai...
ToolHandle< Trk::IVertexTrackCompatibilityEstimator > m_TrackCompatibilityEstimator
double m_initialError
Initial error in form of diagonal elements of the inverse of the covariance matrix (name is misleadin...
ToolHandle< Trk::IImpactPoint3dEstimator > m_ImpactPoint3dEstimator
bool m_doSmoothing
True if smoothing after fit iterations has to be performed: otherwise the Smoother AlgoTool provided ...
AdaptiveVertexFitter(const std::string &t, const std::string &n, const IInterface *p)
default constructor due to Athena interface
bool m_onlyzseed
Variable is true if seeding has to be performed only on the z direction.
virtual std::unique_ptr< xAOD::Vertex > fit(const EventContext &ctx, const std::vector< const xAOD::TrackParticle * > &vectorTrk, const xAOD::Vertex &constraint) const override
ToolHandle< Trk::IVertexSmoother > m_VertexSmoother
virtual std::unique_ptr< xAOD::Vertex > fit(const EventContext &ctx, const std::vector< const xAOD::TrackParticle * > &vectorTrk, const std::vector< const xAOD::NeutralParticle * > &vectorNeut, const Amg::Vector3D &startingPoint) const override
Interface for xAOD::TrackParticle with starting point.
virtual std::unique_ptr< xAOD::Vertex > fit(const EventContext &ctx, const std::vector< const xAOD::TrackParticle * > &vectorTrk, const Amg::Vector3D &startingPoint) const override
virtual StatusCode initialize() override
ToolHandle< Trk::IVertexAnnealingMaker > m_AnnealingMaker
ToolHandle< Trk::IVertexSeedFinder > m_SeedFinder
std::unique_ptr< xAOD::Vertex > fit(const EventContext &ctx, const std::vector< const Trk::TrackParticleBase * > &perigeeList) const
fit providing vector of TrackParticleBase
std::unique_ptr< xAOD::Vertex > fit(const EventContext &ctx, const std::vector< const Trk::Track * > &Vectortrk, const xAOD::Vertex &constraint, const Amg::Vector3D &startingPoint) const
fit providing vector of tracks, constraint and startingPoint
std::unique_ptr< xAOD::Vertex > dothefit(const xAOD::Vertex &ConstraintVertex, const Amg::Vector3D &SeedVertex, std::vector< VxTrackAtVertex > &myLinTracks) const
Internal method, called by the two _fit internal functions, in order to perform the fit,...
ToolHandle< Trk::IVertexUpdator > m_VertexUpdator
ToolHandle< Trk::IVertexLinearizedTrackFactory > m_LinearizedTrackFactory
double m_maxDistToLinPoint
Maximum distance of linearization point of track to actual fitted vertex before needing to relineariz...
long int m_maxIterations
Number of maximum iterations.
virtual std::unique_ptr< xAOD::Vertex > fit(const EventContext &ctx, const std::vector< const xAOD::TrackParticle * > &vectorTrk, const Amg::Vector3D &startingPoint) const =0
Interface for xAOD::TrackParticle with starting point Event Context aware interface.
The VxTrackAtVertex is a common class for all present TrkVertexFitters The VxTrackAtVertex is designe...
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
Vertex_v1 Vertex
Define the latest version of the vertex class.