|
ATLAS Offline Software
|
#include <AdaptiveVertexFitter.h>
|
virtual StatusCode | initialize () override |
|
| AdaptiveVertexFitter (const std::string &t, const std::string &n, const IInterface *p) |
| default constructor due to Athena interface More...
|
|
virtual | ~AdaptiveVertexFitter () |
| destructor More...
|
|
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 with starting point. More...
|
|
virtual xAOD::Vertex * | fit (const std::vector< const xAOD::TrackParticle * > &vectorTrk, const Amg::Vector3D &startingPoint) const override |
|
virtual xAOD::Vertex * | fit (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. More...
|
|
virtual xAOD::Vertex * | fit (const std::vector< const xAOD::TrackParticle * > &vectorTrk, const xAOD::Vertex &constraint) const override |
|
virtual xAOD::Vertex * | fit (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. More...
|
|
virtual xAOD::Vertex * | fit (const std::vector< const Trk::TrackParameters * > &perigeeList, const Amg::Vector3D &startingPoint) const override |
|
virtual xAOD::Vertex * | fit (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. More...
|
|
virtual xAOD::Vertex * | fit (const std::vector< const Trk::TrackParameters * > &perigeeList, const xAOD::Vertex &constraint) const override |
|
xAOD::Vertex * | fit (const std::vector< const Trk::Track * > &Vectortrk, const xAOD::Vertex &constraint, const Amg::Vector3D &startingPoint) const |
| fit providing vector of tracks, constraint and startingPoint More...
|
|
xAOD::Vertex * | fit (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 More...
|
|
xAOD::Vertex * | fit (const std::vector< const Trk::TrackParameters * > &perigeeList, const xAOD::Vertex &constraint, const Amg::Vector3D &startingPoint) const |
|
xAOD::Vertex * | fit (const std::vector< const Trk::TrackParameters * > &perigeeList, const std::vector< const Trk::NeutralParameters * > &neutralPerigeeList) const override |
| fit providing vector of TrackParameters and NeutralParameters More...
|
|
xAOD::Vertex * | fit (const std::vector< const Trk::TrackParameters * > &perigeeList) const override |
|
xAOD::Vertex * | fit (const std::vector< const Trk::TrackParticleBase * > &perigeeList) const |
| fit providing vector of TrackParticleBase More...
|
|
|
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. More...
|
|
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 |
|
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. More...
|
|
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). More...
|
|
- Author
- N. Giacinto Piacquadio (Freiburg ATLAS Group)
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):
- SeedFinder
- LinearizedTrackFactory
- TrackCompatibilityEstimator 3b. ImpactPoint3dEstimator
- VertexUpdator
- VertexSmoother plus another one, which is responsible for letting the temperature go down (the so called "annealing technique")
- AnnealingMaker
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.
◆ AdaptiveVertexFitter()
Trk::AdaptiveVertexFitter::AdaptiveVertexFitter |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~AdaptiveVertexFitter()
Trk::AdaptiveVertexFitter::~AdaptiveVertexFitter |
( |
| ) |
|
|
virtualdefault |
◆ _fit() [1/3]
Internal method for fitting a list of Tracks, with or without constraint and starting point.
Definition at line 259 of file AdaptiveVertexFitter.cxx.
265 ATH_MSG_DEBUG(
"Called Adaptive vertex with Trk::Track. N. Tracks = " << VectorTrk.size());
267 std::vector<const Trk::TrackParameters*> perigeeList;
268 for (
const auto *iter : VectorTrk) {
269 if (std::isnan(iter->perigeeParameters()->parameters()[
Trk::d0])) {
272 perigeeList.push_back(iter->perigeeParameters());
275 xAOD::Vertex * FittedVertex =
_fit(perigeeList,constraint,startingPoint,IsConstraint,IsStartingPoint);
277 if (FittedVertex==
nullptr) {
284 const std::vector<const Trk::Track*>::const_iterator trkbegin=VectorTrk.begin();
285 const std::vector<const Trk::Track*>::const_iterator trkend=VectorTrk.end();
290 for (std::vector<const Trk::Track*>::const_iterator trkiter=trkbegin;trkiter!=trkend;++trkiter)
294 if(((*trkiter)->perigeeParameters()->momentum() -
295 (*vtxiter).initialPerigee()->momentum()).mag()< 1
e-8 &&
296 ((*trkiter)->perigeeParameters()->position() -
297 (*vtxiter).initialPerigee()->position()).mag()< 1
e-8)
302 LinkToTrack * linkTT =
new LinkToTrack(link);
303 (*vtxiter).setOrigTrack(linkTT);
◆ _fit() [2/3]
Internal method for fitting a list of TrackParameters and NeutralParameters, with or without constraint and starting point.
Definition at line 115 of file AdaptiveVertexFitter.cxx.
123 if ( (perigeeList.size() + neutralPerigeeList.size())<2 && !IsConstraint ) {
124 msg(MSG::WARNING) <<
"Not enough tracks (>2) to fit in this event (without constraint)." <<
endmsg;
127 if ((perigeeList.size() + neutralPerigeeList.size())<1 && IsConstraint) {
128 msg(MSG::WARNING) <<
"Not enough tracks (>1) to fit in this event (with constraint)." <<
endmsg;
135 if (IsStartingPoint) {
136 SeedPoint=startingPoint;
138 if (perigeeList.size()>1) {
140 SeedPoint=
m_SeedFinder->findSeed(perigeeList,&constraint);
145 else if (IsConstraint) {
163 std::vector<VxTrackAtVertex> theLinTracks;
165 std::vector<const Trk::TrackParameters*>::const_iterator perigeesBegin=perigeeList.begin();
166 std::vector<const Trk::TrackParameters*>::const_iterator perigeesEnd=perigeeList.end();
168 ATH_MSG_DEBUG(
"Inside fitter with track perigee parameters.");
172 for (std::vector<const Trk::TrackParameters*>::const_iterator perigeesIter=perigeesBegin;perigeesIter!=perigeesEnd;++perigeesIter) {
179 ATH_MSG_DEBUG(
"Track #" << myDebugNTrk++ <<
". TrackParameters: x = " << (*perigeesIter)->position().x() <<
", y = "<< (*perigeesIter)->position().y() <<
", z = "<< (*perigeesIter)->position().z() <<
". Covariance: " << *(*perigeesIter)->covariance());
181 VxTrackAtVertex* LinTrackToAdd =
new VxTrackAtVertex(0.,
nullptr,
nullptr, (*perigeesIter),
nullptr);
187 msg(
MSG::DEBUG) <<
"Adding compatibility to vertex information failed. Newton distance finder didn't converge..." <<
endmsg;
190 theLinTracks.push_back(*LinTrackToAdd);
192 delete LinTrackToAdd;
196 std::vector<const Trk::NeutralParameters*>::const_iterator neutralPerigeesBegin=neutralPerigeeList.begin();
197 std::vector<const Trk::NeutralParameters*>::const_iterator neutralPerigeesEnd =neutralPerigeeList.end();
199 ATH_MSG_DEBUG(
"Inside fitter with neutral perigee parameters.");
201 int myDebugNNeutral(0);
202 for (std::vector<const Trk::NeutralParameters*>::const_iterator neutralPerigeesIter=neutralPerigeesBegin;neutralPerigeesIter!=neutralPerigeesEnd;++neutralPerigeesIter) {
204 ATH_MSG_DEBUG(
"Neutral #" << myDebugNNeutral++ <<
". NeutralParameters: x = " << (*neutralPerigeesIter)->position().x() <<
", y = "<< (*neutralPerigeesIter)->position().y() <<
", z = "<< (*neutralPerigeesIter)->position().z());
205 ATH_MSG_DEBUG(
" Covariance: " << *(*neutralPerigeesIter)->covariance());
206 ATH_MSG_DEBUG(
" Momentum: x = " << (*neutralPerigeesIter)->momentum().x() <<
", y = "<< (*neutralPerigeesIter)->momentum().y() <<
", z = "<< (*neutralPerigeesIter)->momentum().z());
208 VxTrackAtVertex* LinTrackToAdd =
new VxTrackAtVertex(0.,
nullptr,
nullptr,
nullptr, (*neutralPerigeesIter) );
213 msg(
MSG::DEBUG) <<
"Adding compatibility to vertex information failed. Newton distance finder didn't converge..." <<
endmsg;
216 theLinTracks.push_back(*LinTrackToAdd);
218 delete LinTrackToAdd;
242 startingCovMatrix.setIdentity();
245 ConstraintVertex.setPosition( SeedPoint );
246 ConstraintVertex.setCovariancePosition( startingCovMatrix );
247 ConstraintVertex.setFitQuality( 0., -3. );
251 return
dothefit(ConstraintVertex,SeedPoint,theLinTracks);
◆ _fit() [3/3]
Definition at line 593 of file AdaptiveVertexFitter.cxx.
596 const std::vector<const Trk::NeutralParameters*> neutralPerigeeList;
597 return _fit(perigeeList, neutralPerigeeList, constraint, startingPoint, IsConstraint, IsStartingPoint);
◆ dothefit()
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 321 of file AdaptiveVertexFitter.cxx.
356 bool relinearization =
false;
378 relinearization=
false;
380 relinearization=
true;
383 msg(
MSG::DEBUG) <<
"Actual vertex too far away from linearization point: have to linearize tracks again" <<
endmsg;
388 for (iter=lintracksBegin;iter!=lintracksEnd;++iter) {
393 msg(
MSG::DEBUG) <<
"Adding compatibility to vertex information failed. Newton distance finder didn't converge..." <<
endmsg;
404 for (iter=lintracksBegin;iter!=lintracksEnd;++iter) {
410 iter->setWeight(
m_AnnealingMaker->getWeight( astate, iter->vtxCompatibility() ) );
413 msg(
MSG::VERBOSE) <<
"Before annealing: " << iter->vtxCompatibility() <<
414 " Annealing RESULT is:" << iter->weight() <<
" at T: " <<
422 for (iter=lintracksBegin;iter!=lintracksEnd;++iter) {
429 if ( iter->weight() > 1
e-3 ) {
432 if ( iter->linState() ==
nullptr) {
440 ATH_MSG_DEBUG(
"Linearized track to Seed Point. " << *iter );
441 }
else if (relinearization) {
449 ActualSeedPosition=NewVertex;
450 ATH_MSG_DEBUG(
"Linearized track to new seed Point " << NewVertex <<
". " << *iter );
456 msg(
MSG::VERBOSE) <<
"Weight lower than 1e-3, so the track will not be considered anymore" <<
endmsg;
461 msg(MSG::WARNING) <<
"You have just lost a track" <<
endmsg;
473 NewVertex = ActualVertex->
position();
495 for (iter=lintracksBegin;iter!=lintracksEnd;++iter) {
502 if ( iter->initialPerigee() )
503 iter->setPerigeeAtVertex( ( iter->initialPerigee() )->clone() );
504 else if ( iter->initialNeutralPerigee() )
505 iter->setPerigeeAtVertex( ( iter->initialNeutralPerigee() )->clone() );
512 <<
"the ndf of the vertex is at fit end: " << ActualVertex->
numberDoF() <<
endmsg;
◆ fit() [1/14]
fit providing vector of tracks, constraint and startingPoint
◆ fit() [2/14]
◆ fit() [3/14]
Definition at line 560 of file AdaptiveVertexFitter.cxx.
562 const std::vector<const Trk::NeutralParameters*> neutralPerigeeList;
563 return fit(perigeeList, neutralPerigeeList, startingPoint);
◆ fit() [4/14]
◆ fit() [5/14]
◆ fit() [6/14]
◆ fit() [7/14]
◆ fit() [8/14]
Definition at line 569 of file AdaptiveVertexFitter.cxx.
571 const std::vector<const Trk::NeutralParameters*> neutralPerigeeList;
572 return fit(perigeeList, neutralPerigeeList, constraint);
◆ fit() [9/14]
Definition at line 578 of file AdaptiveVertexFitter.cxx.
581 const std::vector<const Trk::NeutralParameters*> neutralPerigeeList;
582 return fit(perigeeList, neutralPerigeeList, constraint, startingPoint);
◆ fit() [10/14]
◆ fit() [11/14]
Definition at line 116 of file AdaptiveVertexFitter.h.
119 return fit(vectorTrk, std::vector<const xAOD::NeutralParticle*>(), startingPoint);
◆ fit() [12/14]
Interface for xAOD::TrackParticle with starting point.
Definition at line 606 of file AdaptiveVertexFitter.cxx.
610 if (vectorTrk.empty()) {
611 msg(MSG::INFO) <<
"Empty vector of tracks passed" <<
endmsg;
615 if (vectorNeut.empty()) {
620 std::vector<const Trk::TrackParameters*> measuredPerigees;
622 for (
const auto *
i : vectorTrk) {
625 if (tmpMeasPer !=
nullptr)
626 measuredPerigees.push_back(tmpMeasPer);
629 <<
"Failed to dynamic_cast this track parameters to perigee"
635 std::vector<const Trk::NeutralParameters*> measuredNeutralPerigees;
637 for (
const auto *
i : vectorNeut) {
640 if (tmpMeasPer !=
nullptr)
641 measuredNeutralPerigees.push_back(tmpMeasPer);
644 <<
"Failed to dynamic_cast this neutral parameters to perigee"
650 measuredNeutralPerigees,
657 if (fittedVertex ==
nullptr) {
662 ->vxTrackAtVertexAvailable())
667 for (
unsigned int i = 0;
i < vectorTrk.size(); ++
i) {
669 LinkToXAODTrackParticle* linkTT =
new LinkToXAODTrackParticle();
672 vectorTrk[
i]->container());
674 if (!linkTT->toIndexedElement(*cont, vectorTrk[
i]->index())) {
676 <<
"Failed to set the EL for this particle correctly" <<
endmsg;
680 <<
"Failed to identify a container for this TP" <<
endmsg;
687 for (
unsigned int i = 0;
i < vectorNeut.size(); ++
i) {
688 LinkToXAODNeutralParticle* linkTT =
new LinkToXAODNeutralParticle();
691 vectorNeut[
i]->container());
693 if (!linkTT->toIndexedElement(*cont, vectorNeut[
i]->index())) {
695 <<
"Failed to set the EL for this particle correctly" <<
endmsg;
699 <<
"Failed to identify a container for this TP" <<
endmsg;
713 for (
unsigned int i = 0;
i < VTAVsize; ++
i) {
718 "VxTrackAtVertex is not found");
737 if (!linkToXAODTPneutral) {
739 "Skipping track. Trying to set link to something else than "
740 "xAOD::TrackParticle or xAOD::NeutralParticle.");
◆ fit() [13/14]
Interface for xAOD::TrackParticle with vertex constraint the position of the constraint is ALWAYS the starting point.
Definition at line 756 of file AdaptiveVertexFitter.cxx.
760 if(vectorTrk.empty())
762 msg(MSG::INFO)<<
"Empty vector of tracks passed"<<
endmsg;
766 if(vectorNeut.empty())
768 msg(MSG::INFO)<<
"Empty vector of neutrals passed"<<
endmsg;
772 std::vector<const Trk::TrackParameters*> measuredPerigees;
774 for(
const auto *
i : vectorTrk)
778 if(tmpMeasPer!=
nullptr) measuredPerigees.push_back(tmpMeasPer);
779 else msg(MSG::INFO)<<
"Failed to dynamic_cast this track parameters to perigee"<<
endmsg;
783 std::vector<const Trk::NeutralParameters*> measuredNeutralPerigees;
785 for(
const auto *
i : vectorNeut)
789 if(tmpMeasPer!=
nullptr) measuredNeutralPerigees.push_back(tmpMeasPer);
790 else msg(MSG::INFO)<<
"Failed to dynamic_cast this neutral parameters to perigee"<<
endmsg;
803 for(
unsigned int i = 0;
i <vectorTrk.size(); ++
i)
806 LinkToXAODTrackParticle* linkTT =
new LinkToXAODTrackParticle();
810 if( ! linkTT->toIndexedElement( *cont, vectorTrk[
i ]->index() ) )
812 msg(MSG::WARNING)<<
"Failed to set the EL for this particle correctly"<<
endmsg;
815 msg(MSG::WARNING)<<
"Failed to identify a container for this TP"<<
endmsg;
823 for(
unsigned int i = 0;
i <vectorNeut.size(); ++
i)
825 LinkToXAODNeutralParticle* linkTT =
new LinkToXAODNeutralParticle();
829 if( ! linkTT->toIndexedElement( *cont, vectorNeut[
i ]->index() ) )
831 msg(MSG::WARNING)<<
"Failed to set the EL for this particle correctly"<<
endmsg;
834 msg(MSG::WARNING)<<
"Failed to identify a container for this NP"<<
endmsg;
838 ( fittedVertex->
vxTrackAtVertex() )[vectorTrk.size()+
i].setOrigTrack(linkTT);
848 for (
unsigned int i = 0 ;
i < VTAVsize ; ++
i)
853 ATH_MSG_WARNING (
" Trying to set link to xAOD::TrackParticle. The VxTrackAtVertex is not found");
871 if (!linkToXAODTPneutral) {
872 ATH_MSG_WARNING (
"Skipping track. Trying to set link to something else than xAOD::TrackParticle or xAOD::NeutralParticle.");
◆ fit() [14/14]
◆ initialize()
StatusCode Trk::AdaptiveVertexFitter::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 49 of file AdaptiveVertexFitter.cxx.
53 return StatusCode::FAILURE;
57 return StatusCode::FAILURE;
64 return StatusCode::FAILURE;
71 return StatusCode::FAILURE;
78 return StatusCode::FAILURE;
85 return StatusCode::FAILURE;
95 return StatusCode::FAILURE;
103 return StatusCode::FAILURE;
108 return StatusCode::SUCCESS;
◆ m_AnnealingMaker
◆ m_doSmoothing
bool Trk::AdaptiveVertexFitter::m_doSmoothing |
|
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 294 of file AdaptiveVertexFitter.h.
◆ m_ImpactPoint3dEstimator
Initial value:{
this,
"ImpactPoint3dEstimator",
"Trk::ImpactPoint3dEstimator/ImpactPoint3dEstimator"
}
Definition at line 241 of file AdaptiveVertexFitter.h.
◆ m_initialError
double Trk::AdaptiveVertexFitter::m_initialError |
|
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 279 of file AdaptiveVertexFitter.h.
◆ m_LinearizedTrackFactory
Initial value:{
this,
"LinearizedTrackFactory",
"Trk::FullLinearizedTrackFactory"
}
Definition at line 232 of file AdaptiveVertexFitter.h.
◆ m_maxDistToLinPoint
double Trk::AdaptiveVertexFitter::m_maxDistToLinPoint |
|
private |
Maximum distance of linearization point of track to actual fitted vertex before needing to relinearize (in mm)
Definition at line 271 of file AdaptiveVertexFitter.h.
◆ m_maxIterations
long int Trk::AdaptiveVertexFitter::m_maxIterations |
|
private |
◆ m_onlyzseed
bool Trk::AdaptiveVertexFitter::m_onlyzseed |
|
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 287 of file AdaptiveVertexFitter.h.
◆ m_SeedFinder
◆ m_TrackCompatibilityEstimator
Initial value:{ this,
"TrackCompatibilityEstimato",
"Trk::Chi2TrackCompatibilityEstimator" }
Definition at line 238 of file AdaptiveVertexFitter.h.
◆ m_VertexSmoother
◆ m_VertexUpdator
The documentation for this class was generated from the following files:
JetConstituentVector::iterator iterator
ToolHandle< Trk::IImpactPoint3dEstimator > m_ImpactPoint3dEstimator
void setPosition(const Amg::Vector3D &position)
Sets the 3-position.
void setFitQuality(float chiSquared, float numberDoF)
Set the 'Fit Quality' information.
The VxTrackAtVertex is a common class for all present TrkVertexFitters The VxTrackAtVertex is designe...
long int m_maxIterations
Number of maximum iterations.
Vertex_v1 Vertex
Define the latest version of the vertex class.
ToolHandle< Trk::IVertexUpdator > m_VertexUpdator
Scalar perp() const
perp method - perpenticular length
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
const Amg::Vector3D & position() const
Returns the 3-pos.
unsigned int AnnealingState
bool m_onlyzseed
Variable is true if seeding has to be performed only on the z direction.
AmgSymMatrix(5) &GXFTrackState
void setVertexType(VxType::VertexType vType)
Set the type of the vertex.
void addTrackAtVertex(const ElementLink< TrackParticleContainer > &tr, float weight=1.0)
Add a new track to the vertex.
ToolHandle< Trk::IVertexSeedFinder > m_SeedFinder
virtual ~AdaptiveVertexFitter()
destructor
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::IVertexSmoother > m_VertexSmoother
bool m_doSmoothing
True if smoothing after fit iterations has to be performed: otherwise the Smoother AlgoTool provided ...
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...
Element link to XAOD TrackParticle.
ToolHandle< Trk::IVertexAnnealingMaker > m_AnnealingMaker
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 with starting point.
bool setElement(ElementType element)
Set to point to an element.
ToolHandle< Trk::IVertexLinearizedTrackFactory > m_LinearizedTrackFactory
void makePrivateStore()
Create a new (empty) private store for this object.
Eigen::Matrix< double, 3, 1 > Vector3D
float numberDoF() const
Returns the number of degrees of freedom of the vertex fit as float.
ToolHandle< Trk::IVertexTrackCompatibilityEstimator > m_TrackCompatibilityEstimator
Element link to XAOD NeutralParticle.
void addNeutralAtVertex(const ElementLink< NeutralParticleContainer > &tr, float weight=1.0)
Add a new neutral to the vertex.
float chiSquared() const
Returns the of the vertex fit as float.
Class describing a Vertex.
#define ATH_MSG_WARNING(x)
double m_initialError
Initial error in form of diagonal elements of the inverse of the covariance matrix (name is misleadin...
std::vector< Trk::VxTrackAtVertex > & vxTrackAtVertex()
Non-const access to the VxTrackAtVertex vector.
double m_maxDistToLinPoint
Maximum distance of linearization point of track to actual fitted vertex before needing to relineariz...
bool vxTrackAtVertexAvailable() const
Check if VxTrackAtVertices are attached to the object.
@ NotSpecified
Default value, no explicit type set.
void setCovariancePosition(const AmgSymMatrix(3)&covariancePosition)
Sets the vertex covariance matrix.