![]() |
ATLAS Offline Software
|
#include <AdaptiveVertexFitter.h>
Public Member Functions | |
| virtual StatusCode | initialize () override |
| AdaptiveVertexFitter (const std::string &t, const std::string &n, const IInterface *p) | |
| default constructor due to Athena interface | |
| virtual | ~AdaptiveVertexFitter () |
| destructor | |
| 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 std::unique_ptr< xAOD::Vertex > | fit (const EventContext &ctx, const std::vector< const xAOD::TrackParticle * > &vectorTrk, const std::vector< const xAOD::NeutralParticle * > &vectorNeut, const xAOD::Vertex &constraint) const override |
| Interface for xAOD::TrackParticle with vertex constraint the position of the constraint is ALWAYS the starting point. | |
| virtual std::unique_ptr< xAOD::Vertex > | fit (const EventContext &ctx, const std::vector< const xAOD::TrackParticle * > &vectorTrk, const xAOD::Vertex &constraint) const override |
| virtual std::unique_ptr< xAOD::Vertex > | fit (const EventContext &ctx, const std::vector< const Trk::TrackParameters * > &perigeeList, const std::vector< const Trk::NeutralParameters * > &neutralPerigeeList, const Amg::Vector3D &startingPoint) const override |
| Interface for MeasuredPerigee with starting point. | |
| virtual std::unique_ptr< xAOD::Vertex > | fit (const EventContext &ctx, const std::vector< const Trk::TrackParameters * > &perigeeList, const Amg::Vector3D &startingPoint) const override |
| virtual std::unique_ptr< xAOD::Vertex > | fit (const EventContext &ctx, const std::vector< const Trk::TrackParameters * > &perigeeList, const std::vector< const Trk::NeutralParameters * > &neutralPerigeeList, const xAOD::Vertex &constraint) const override |
| Interface for MeasuredPerigee with vertex constraint. | |
| virtual std::unique_ptr< xAOD::Vertex > | fit (const EventContext &ctx, const std::vector< const Trk::TrackParameters * > &perigeeList, const xAOD::Vertex &constraint) const override |
| 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 > | fit (const EventContext &ctx, const std::vector< const Trk::TrackParameters * > &perigeeList, const std::vector< const Trk::NeutralParameters * > &neutralPerigeeList, const xAOD::Vertex &constraint, const Amg::Vector3D &startingPoint) const |
| fit providing vector of ParametersBase, constraint and startingPoint | |
| std::unique_ptr< xAOD::Vertex > | fit (const EventContext &ctx, const std::vector< const Trk::TrackParameters * > &perigeeList, const xAOD::Vertex &constraint, const Amg::Vector3D &startingPoint) const |
| std::unique_ptr< xAOD::Vertex > | fit (const EventContext &ctx, const std::vector< const Trk::TrackParameters * > &perigeeList, const std::vector< const Trk::NeutralParameters * > &neutralPerigeeList) const override |
| fit providing vector of TrackParameters and NeutralParameters | |
| std::unique_ptr< xAOD::Vertex > | fit (const EventContext &ctx, const std::vector< const Trk::TrackParameters * > &perigeeList) const override |
| std::unique_ptr< xAOD::Vertex > | fit (const EventContext &ctx, const std::vector< const Trk::TrackParticleBase * > &perigeeList) const |
| fit providing vector of TrackParticleBase | |
Private Member Functions | |
| 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 constraint and starting point. | |
| std::unique_ptr< xAOD::Vertex > | _fit (const std::vector< const Trk::TrackParameters * > &perigeeList, const xAOD::Vertex &constraint=xAOD::Vertex(), const Amg::Vector3D &startingPoint=Amg::Vector3D(), bool IsConstraint=false, bool IsStartingPoint=false) const |
| std::unique_ptr< xAOD::Vertex > | _fit (const std::vector< const Trk::Track * > &VectorTrk, 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 Tracks, with or without constraint and starting point. | |
| 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, after having initialized the input (constraint + seed). | |
Private Attributes | |
| ToolHandle< Trk::IVertexSeedFinder > | m_SeedFinder |
| ToolHandle< Trk::IVertexLinearizedTrackFactory > | m_LinearizedTrackFactory |
| ToolHandle< Trk::IVertexTrackCompatibilityEstimator > | m_TrackCompatibilityEstimator |
| ToolHandle< Trk::IImpactPoint3dEstimator > | m_ImpactPoint3dEstimator |
| ToolHandle< Trk::IVertexUpdator > | m_VertexUpdator |
| ToolHandle< Trk::IVertexSmoother > | m_VertexSmoother |
| ToolHandle< Trk::IVertexAnnealingMaker > | m_AnnealingMaker |
| long int | m_maxIterations |
| Number of maximum iterations. | |
| double | m_maxDistToLinPoint |
| Maximum distance of linearization point of track to actual fitted vertex before needing to relinearize (in mm). | |
| double | m_initialError |
| Initial error in form of diagonal elements of the inverse of the covariance matrix (name is misleading: take the error, square it and initialize the variable with its inverse). | |
| bool | m_onlyzseed |
| Variable is true if seeding has to be performed only on the z direction. | |
| bool | m_doSmoothing |
| True if smoothing after fit iterations has to be performed: otherwise the Smoother AlgoTool provided to the fitter will be ignored. | |
This class implements a vertexing fitting algorithm which is adaptive and robust, quite insensitive to the presence of outliers.
The vertex algorithm is based on the typical Kalman-Filtering approach, with the difference that the inverse of the covariance matrices of the track parameters of the tracks which enter the fit are reweighted according to the probability of the tracks to be compatible with the vertex to be fit. In this way outliers/tracks which do not belong to the vertex are smoothly rejected.
Since the estimation of the vertex position during the first fit iterations is not particularly good and the compatiblity estimation of the tracks not always reliable, an annealing technique is also implemented, in order to make the rejection of outliers soft in the beginning and harder towards the end of the fit (for this the Annealing Maker class is responsible: as a default the Temperature of this thermodinamical procedure is lowered according to few predefined steps)
For greater modularity the algorithm is divided into 6 modules (AlgTools in Athena):
This kind of algorithm was implemented for the first time by CMS: for information about the theoretical motivations a good reference is Wolfgang Waltenberger's PhD Thesis and many of the calculations implemented have been extensively shown in theoretical & experimental papers by Fruehwirth, Waltenberger, Strandlie et al.
Changes:
David Shope david.nosp@m..ric.nosp@m.hard..nosp@m.shop.nosp@m.e@cer.nosp@m.n.ch (2016-04-19) EDM Migration to xAOD - from Trk::VxCandidate to xAOD::Vertex, from Trk::RecVertex to xAOD::Vertex, from Trk::Vertex to Amg::Vector3D
Definition at line 86 of file AdaptiveVertexFitter.h.
| Trk::AdaptiveVertexFitter::AdaptiveVertexFitter | ( | const std::string & | t, |
| const std::string & | n, | ||
| const IInterface * | p ) |
default constructor due to Athena interface
Definition at line 29 of file AdaptiveVertexFitter.cxx.
|
virtualdefault |
destructor
|
private |
Internal method for fitting a list of Tracks, with or without constraint and starting point.
Definition at line 257 of file AdaptiveVertexFitter.cxx.
|
private |
Internal method for fitting a list of TrackParameters and NeutralParameters, with or without constraint and starting point.
Definition at line 113 of file AdaptiveVertexFitter.cxx.
|
private |
Definition at line 602 of file AdaptiveVertexFitter.cxx.
|
private |
Internal method, called by the two _fit internal functions, in order to perform the fit, after having initialized the input (constraint + seed).
The real fit happens here.
Definition at line 319 of file AdaptiveVertexFitter.cxx.
| std::unique_ptr< xAOD::Vertex > Trk::AdaptiveVertexFitter::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
|
override |
Definition at line 593 of file AdaptiveVertexFitter.cxx.
|
overridevirtual |
Definition at line 562 of file AdaptiveVertexFitter.cxx.
|
override |
fit providing vector of TrackParameters and NeutralParameters
Definition at line 553 of file AdaptiveVertexFitter.cxx.
|
overridevirtual |
Interface for MeasuredPerigee with starting point.
Definition at line 521 of file AdaptiveVertexFitter.cxx.
|
overridevirtual |
Interface for MeasuredPerigee with vertex constraint.
Definition at line 532 of file AdaptiveVertexFitter.cxx.
| std::unique_ptr< xAOD::Vertex > Trk::AdaptiveVertexFitter::fit | ( | const EventContext & | ctx, |
| const std::vector< const Trk::TrackParameters * > & | perigeeList, | ||
| const std::vector< const Trk::NeutralParameters * > & | neutralPerigeeList, | ||
| const xAOD::Vertex & | constraint, | ||
| const Amg::Vector3D & | startingPoint ) const |
fit providing vector of ParametersBase, constraint and startingPoint
Definition at line 542 of file AdaptiveVertexFitter.cxx.
|
overridevirtual |
Definition at line 572 of file AdaptiveVertexFitter.cxx.
| std::unique_ptr< xAOD::Vertex > Trk::AdaptiveVertexFitter::fit | ( | const EventContext & | ctx, |
| const std::vector< const Trk::TrackParameters * > & | perigeeList, | ||
| const xAOD::Vertex & | constraint, | ||
| const Amg::Vector3D & | startingPoint ) const |
Definition at line 582 of file AdaptiveVertexFitter.cxx.
| std::unique_ptr< xAOD::Vertex > Trk::AdaptiveVertexFitter::fit | ( | const EventContext & | ctx, |
| const std::vector< const Trk::TrackParticleBase * > & | perigeeList ) const |
fit providing vector of TrackParticleBase
|
inlineoverridevirtual |
Definition at line 117 of file AdaptiveVertexFitter.h.
|
overridevirtual |
Interface for xAOD::TrackParticle with starting point.
Definition at line 617 of file AdaptiveVertexFitter.cxx.
|
overridevirtual |
Interface for xAOD::TrackParticle with vertex constraint the position of the constraint is ALWAYS the starting point.
Definition at line 769 of file AdaptiveVertexFitter.cxx.
|
inlineoverridevirtual |
Definition at line 132 of file AdaptiveVertexFitter.h.
|
overridevirtual |
Definition at line 47 of file AdaptiveVertexFitter.cxx.
|
private |
Definition at line 270 of file AdaptiveVertexFitter.h.
|
private |
True if smoothing after fit iterations has to be performed: otherwise the Smoother AlgoTool provided to the fitter will be ignored.
Definition at line 310 of file AdaptiveVertexFitter.h.
|
private |
Definition at line 257 of file AdaptiveVertexFitter.h.
|
private |
Initial error in form of diagonal elements of the inverse of the covariance matrix (name is misleading: take the error, square it and initialize the variable with its inverse).
Definition at line 295 of file AdaptiveVertexFitter.h.
|
private |
Definition at line 248 of file AdaptiveVertexFitter.h.
|
private |
Maximum distance of linearization point of track to actual fitted vertex before needing to relinearize (in mm).
Definition at line 287 of file AdaptiveVertexFitter.h.
|
private |
Number of maximum iterations.
Definition at line 280 of file AdaptiveVertexFitter.h.
|
private |
Variable is true if seeding has to be performed only on the z direction.
In this case, as a guess of the initial position in the transverse plane, the x and y position of the beam spot are used.
Definition at line 303 of file AdaptiveVertexFitter.h.
|
private |
Definition at line 243 of file AdaptiveVertexFitter.h.
|
private |
Definition at line 254 of file AdaptiveVertexFitter.h.
|
private |
Definition at line 265 of file AdaptiveVertexFitter.h.
|
private |
Definition at line 262 of file AdaptiveVertexFitter.h.