ATLAS Offline Software
Loading...
Searching...
No Matches
AdaptiveMultiVertexFitter.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
5
6#ifndef TRKVERTEXFITTERS_ADAPTIVEMULTIVERTEXFITTER_H
7#define TRKVERTEXFITTERS_ADAPTIVEMULTIVERTEXFITTER_H
8
9
11#include "GaudiKernel/ToolHandle.h"
12
13//xAOD includes
14#include "xAODTracking/Vertex.h"
15#include <vector>
16//
95
96
97namespace Trk
98{
99
100 static const InterfaceID IID_AdaptiveMultiVertexFitter("AdaptiveMultiVertexFitter", 1, 0);
101
102
103 // class MeasuredPerigee;
104 class Track;
105 class VxTrackAtVertex;
106
107 class TrackToVtxLink;
108
110 {
111 public:
112 StatusCode initialize();
113 StatusCode finalize();
114
115
119
120 AdaptiveMultiVertexFitter(const std::string& t, const std::string& n, const IInterface* p);
121
125
127
141
142 void
143 fit(std::vector<xAOD::Vertex*> & allVertices) const;
144
169
170 void
171 addVtxToFit(xAOD::Vertex* pVtx) const;
172 //
173 void
174 addVtxTofit(xAOD::Vertex* pVtx) const { return addVtxToFit(pVtx);}
175
176 static const InterfaceID&
180
181 private:
182
187
188 static bool
189 findAmongVertices(const xAOD::Vertex* vertex,const std::vector<xAOD::Vertex*> & previousVertices) ;
190
197
198 std::vector<double>
199 collectWeights(TrackToVtxLink & tracklink) const;
200
208
209 void
210 prepareCompatibility(xAOD::Vertex* newvertex) const;
211
215
216 long int
218
219
224
225 double
227
232
233 double
235
240
241 bool
243
248
249 double
251
256
257 double
259
260 ToolHandle<Trk::IVertexLinearizedTrackFactory> m_LinearizedTrackFactory{
261 this,
262 "LinearizedTrackFactory",
263 "Trk::FullLinearizedTrackFactory"
264 };
265 ToolHandle<Trk::IVertexTrackCompatibilityEstimator>
267 "TrackCompatibilityEstimator",
268 "Trk::Chi2TrackCompatibilityEstimator" };
269 ToolHandle<Trk::IImpactPoint3dEstimator> m_ImpactPoint3dEstimator{
270 this,
271 "ImpactPoint3dEstimator",
272 "Trk::ImpactPoint3dEstimator/ImpactPoint3dEstimator"
273 };
274
275 ToolHandle<Trk::IVertexUpdator> m_VertexUpdator{
276 this,
277 "VertexUpdator",
278 "Trk::KalmanVertexUpdator"
279 };
280 ToolHandle<Trk::IVertexSmoother> m_VertexSmoother{
281 this,
282 "VertexSmoother",
283 "Trk::SequentialVertexSmoother"
284 };
285 ToolHandle<Trk::IVertexAnnealingMaker> m_AnnealingMaker{
286 this,
287 "AnnealingMaker",
288 "Trk::DetAnnealingMaker"
289 };
290 };
291}
292
293#endif
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
ToolHandle< Trk::IImpactPoint3dEstimator > m_ImpactPoint3dEstimator
double m_minweight
Minimum weight a track as to have in order to be considered in the fit of one of the vertices.
virtual ~AdaptiveMultiVertexFitter()
destructor
ToolHandle< Trk::IVertexSmoother > m_VertexSmoother
static bool findAmongVertices(const xAOD::Vertex *vertex, const std::vector< xAOD::Vertex * > &previousVertices)
Internal method to find a VxCandidate among a vector of VxCandidates.
long int m_maxIterations
Max number of iterations.
ToolHandle< Trk::IVertexAnnealingMaker > m_AnnealingMaker
void addVtxToFit(xAOD::Vertex *pVtx) const
Adds a new MVFVxCandidate to a previous multi-vertex fit and fits everything together.
void addVtxTofit(xAOD::Vertex *pVtx) const
void prepareCompatibility(xAOD::Vertex *newvertex) const
Internal function to prepare the compatibility information of all the tracks of the new vertex (an IP...
bool m_doSmoothing
True if smoothing after fit iterations has to be performed: otherwise the Smoother AlgoTool provided ...
double m_initialError
Initial error in form of diagonal elements of the inverse of the covariance matrix (name is misleadin...
ToolHandle< Trk::IVertexUpdator > m_VertexUpdator
ToolHandle< Trk::IVertexLinearizedTrackFactory > m_LinearizedTrackFactory
ToolHandle< Trk::IVertexTrackCompatibilityEstimator > m_TrackCompatibilityEstimator
double m_maxRelativeShift
Maximum shift allowed for last iteration... (in terms of Delta|VecR|/sigma|VecR|)
double m_maxDistToLinPoint
Maximum distance of linearization point of track to actual fitted vertex before needing to relineariz...
void fit(std::vector< xAOD::Vertex * > &allVertices) const
fit all the provided MVFVxCandidate, which have to be already properly initialized.
AdaptiveMultiVertexFitter(const std::string &t, const std::string &n, const IInterface *p)
default constructor due to Athena interface
static const InterfaceID & interfaceID()
std::vector< double > collectWeights(TrackToVtxLink &tracklink) const
Internal function to collect the weights of the tracks partecipating to all the possible vertices (ne...
The VxTrackAtVertex is a common class for all present TrkVertexFitters The VxTrackAtVertex is designe...
Ensure that the ATLAS eigen extensions are properly loaded.
static const InterfaceID IID_AdaptiveMultiVertexFitter("AdaptiveMultiVertexFitter", 1, 0)
Vertex_v1 Vertex
Define the latest version of the vertex class.