ATLAS Offline Software
Loading...
Searching...
No Matches
SequentialVertexFitter.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TrkVertexFitters_SequentialVertexFitter_H
6#define TrkVertexFitters_SequentialVertexFitter_H
7
9#include "GaudiKernel/ToolHandle.h"
13
14//xAOD includes
18
19
45
46
47namespace Trk
48{
49 class Track;
50 class VxTrackAtVertex;
51 class IVertexUpdator;
52 class IVertexSmoother;
54
55 class SequentialVertexFitter : public extends<AthAlgTool, IVertexFitter>
56 {
57 public:
58 // The following 'using' can be removed when IVertexFitter::fit has been fully migrated to the one with the EventContext
60
61 virtual StatusCode initialize() override;
62 virtual StatusCode finalize() override;
63
67
68 SequentialVertexFitter(const std::string& t, const std::string& n, const IInterface* p);
69
73
75
79 virtual xAOD::Vertex * fit(const std::vector<const xAOD::TrackParticle*>& vectorTrk,
80 const std::vector<const xAOD::NeutralParticle*>& vectorNeut,
81 const Amg::Vector3D& startingPoint) const override;
85 virtual xAOD::Vertex * fit(const std::vector<const xAOD::TrackParticle*>& vectorTrk,
86 const Amg::Vector3D& startingPoint) const override
87 {return fit(vectorTrk, std::vector<const xAOD::NeutralParticle*>(), startingPoint);};
88
93 virtual xAOD::Vertex * fit(const std::vector<const xAOD::TrackParticle*>& vectorTrk,
94 const std::vector<const xAOD::NeutralParticle*>& vectorNeut,
95 const xAOD::Vertex& constraint) const override;
100 virtual xAOD::Vertex * fit(const std::vector<const xAOD::TrackParticle*>& vectorTrk,
101 const xAOD::Vertex& constraint) const override
102 {return fit(vectorTrk, std::vector<const xAOD::NeutralParticle*>(), constraint);};
103
104
105
110 virtual xAOD::Vertex * fit(const std::vector<const Trk::TrackParameters*> & perigeeList,
111 const std::vector<const Trk::NeutralParameters*> & neutralPerigeeList,
112 const Amg::Vector3D& startingPoint) const override;
117 virtual xAOD::Vertex * fit(const std::vector<const Trk::TrackParameters*> & paramList,
118 const Amg::Vector3D& startingPoint) const override
119 {return fit(paramList, std::vector<const Trk::NeutralParameters*>(), startingPoint);};
120
125 virtual xAOD::Vertex * fit(const std::vector<const Trk::TrackParameters*> & perigeeList,
126 const std::vector<const Trk::NeutralParameters*> & neutralPerigeeList,
127 const xAOD::Vertex& constraint) const override;
128 virtual xAOD::Vertex * fit(const std::vector<const Trk::TrackParameters*> & perigeeList,
129 const xAOD::Vertex& constraint) const override
130 {return fit(perigeeList, std::vector<const Trk::NeutralParameters*>(), constraint);};
131
138
139 virtual xAOD::Vertex* fit(
140 const std::vector<const Trk::TrackParameters*>& perigeeList,
141 const std::vector<const Trk::NeutralParameters*>& neutralPerigeeList)
142 const override;
144 const std::vector<const Trk::TrackParameters*>& perigeeList) const override
145 {return fit(perigeeList, std::vector<const Trk::NeutralParameters*>());};
146
147
148 private:
149
153
154 std::vector<Trk::VxTrackAtVertex> linearizeTracks(
155 const std::vector<const Trk::TrackParameters*>& perigeeList,
156 const std::vector<const Trk::NeutralParameters*>& neutralPerigeeList,
157 const xAOD::Vertex& vrt) const;
158
162
163 void reLinearizeTracks(std::vector<Trk::VxTrackAtVertex>& tracks, const Amg::Vector3D & vrt)const;
164
165 ToolHandle< IVertexUpdator > m_Updator;
166 ToolHandle< IVertexSmoother > m_Smoother;
167 ToolHandle< Trk::IVertexLinearizedTrackFactory > m_LinTrkFactory;
168
172
174
178
179 unsigned int m_maxStep;
180
184
186
190
192
196
198
199 /*
200 * Avoid vertex to be initialize outside ID envelope given bu m_maxR and m_maxZ
201 */
202
203 double m_maxR;
204 double m_maxZ;
205
206 }; //end of class description
207}//end of namespace definition
208
209#endif
virtual std::unique_ptr< xAOD::Vertex > fit(const EventContext &ctx, const std::vector< const xAOD::TrackParticle * > &vectorTrk, const Amg::Vector3D &startingPoint) const
Interface for xAOD::TrackParticle with starting point Event Context aware interface.
An Abstract Base Class for the LinearizedTrackFactories.
An abstract base class for the vertex smoothers Update the tracks of type Trk::VxTrackAtVertex belong...
An abstract base class for the vertex updators.
bool m_doSmoothing
Flag controlling optional smoothing.
virtual StatusCode initialize() override
virtual xAOD::Vertex * fit(const std::vector< const Trk::TrackParameters * > &perigeeList, const xAOD::Vertex &constraint) const override
virtual xAOD::Vertex * fit(const std::vector< const Trk::TrackParameters * > &perigeeList) const override
bool m_useLooseConvergence
Use loose convergence criterium (maxShift) or hard (+maxDeltaChi2)
virtual xAOD::Vertex * fit(const std::vector< const xAOD::TrackParticle * > &vectorTrk, const std::vector< const xAOD::NeutralParticle * > &vectorNeut, const Amg::Vector3D &startingPoint) const override
Interface for xAOD::TrackParticle and xAOD::NeutralParticle with starting point.
virtual xAOD::Vertex * fit(const std::vector< const xAOD::TrackParticle * > &vectorTrk, const Amg::Vector3D &startingPoint) const override
Interface for xAOD::TrackParticle with starting point.
unsigned int m_maxStep
Max number of iterations to perform (in case of no convergence)
virtual xAOD::Vertex * fit(const std::vector< const Trk::TrackParameters * > &paramList, const Amg::Vector3D &startingPoint) const override
Vertex fit from list of track and parameters and a starting point.
ToolHandle< IVertexUpdator > m_Updator
SequentialVertexFitter(const std::string &t, const std::string &n, const IInterface *p)
constructor
ToolHandle< IVertexSmoother > m_Smoother
float m_maxShift
Max shift (represents the convergence criterion)
virtual xAOD::Vertex * fit(const std::vector< const xAOD::TrackParticle * > &vectorTrk, const xAOD::Vertex &constraint) const override
Interface for xAOD::TrackParticle with vertex constraint the position of the constraint is ALWAYS the...
float m_maxDeltaChi2
Max DeltaChi2 allowed in hard convergence criterium.
void reLinearizeTracks(std::vector< Trk::VxTrackAtVertex > &tracks, const Amg::Vector3D &vrt) const
Relinearization on iterations.
ToolHandle< Trk::IVertexLinearizedTrackFactory > m_LinTrkFactory
virtual StatusCode finalize() override
std::vector< Trk::VxTrackAtVertex > linearizeTracks(const std::vector< const Trk::TrackParameters * > &perigeeList, const std::vector< const Trk::NeutralParameters * > &neutralPerigeeList, const xAOD::Vertex &vrt) const
Internal method related to the linearization of tracks (initial linearization)
virtual ~SequentialVertexFitter()
destructor
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.