ATLAS Offline Software
Loading...
Searching...
No Matches
IVertexUpdator.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
6// IVertexUpdator, (c) ATLAS Detector software 2006
8
9#ifndef TRKVERTEXFITTERINTERFACE_IVERTEXUPDATOR_H
10#define TRKVERTEXFITTERINTERFACE_IVERTEXUPDATOR_H
11
12#include "GaudiKernel/IAlgTool.h"
13#include "xAODTracking/Vertex.h"
14
35
36
37namespace Trk
38{
39
40 static const InterfaceID IID_IVertexUpdator("IVertexUpdator", 1, 0);
41
42 class VxTrackAtVertex;
43 class LinearizedTrack;
44
45 class IVertexUpdator : virtual public IAlgTool {
46
47 public:
51 virtual ~IVertexUpdator(){};
52
56 static const InterfaceID& interfaceID() { return IID_IVertexUpdator; };
57
58 // Slim struct used to transport the (temporary) result of positionUpdate.
59 // Significantly faster than using an xAOD::Vertex for this purpose.
61 Amg::Vector3D position; // vertex position
62 AmgSymMatrix(3) covariancePosition; // position covariance
63 AmgSymMatrix(5) trkParametersWeight; // inverse track parameter covariance,
64 // cached to avoid re-calculation
65 };
66
67 // operating mode for positionUpdate.
68 typedef enum{
71 } updateMode;
72
76 virtual xAOD::Vertex * add(xAOD::Vertex &, VxTrackAtVertex &) const =0;
77
82
88 virtual positionUpdateOutcome positionUpdate (const xAOD::Vertex& vtx, const LinearizedTrack * trk, double trackWeight, updateMode mode) const = 0;
89
94 virtual float trackParametersChi2(const xAOD::Vertex& new_vtx, const LinearizedTrack * trk) const = 0;
95 virtual float trackParametersChi2(const positionUpdateOutcome & new_vtx , const LinearizedTrack * trk) const = 0;
96
101 virtual float vertexPositionChi2(const xAOD::Vertex& old_vtx, const xAOD::Vertex& new_vtx) const = 0;
102 virtual float vertexPositionChi2(const xAOD::Vertex& old_vtx, const positionUpdateOutcome & new_vtx) const = 0;
103
104 };
105}
106#endif
An abstract base class for the vertex updators.
virtual float vertexPositionChi2(const xAOD::Vertex &old_vtx, const positionUpdateOutcome &new_vtx) const =0
virtual xAOD::Vertex * remove(xAOD::Vertex &, VxTrackAtVertex &) const =0
Remove method: removes one track from a vertex.
static const InterfaceID & interfaceID()
AlgTool interface methods.
virtual ~IVertexUpdator()
Virtual destructor.
virtual float trackParametersChi2(const positionUpdateOutcome &new_vtx, const LinearizedTrack *trk) const =0
virtual xAOD::Vertex * add(xAOD::Vertex &, VxTrackAtVertex &) const =0
Add method: adds one track to a vertex.
virtual float trackParametersChi2(const xAOD::Vertex &new_vtx, const LinearizedTrack *trk) const =0
Method calculating the interstep Chi2 increment.
virtual float vertexPositionChi2(const xAOD::Vertex &old_vtx, const xAOD::Vertex &new_vtx) const =0
Method calculating the vertex displacement-related part of the chi2 Can also be called using the ou...
virtual positionUpdateOutcome positionUpdate(const xAOD::Vertex &vtx, const LinearizedTrack *trk, double trackWeight, updateMode mode) const =0
Position update method.
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.
static const InterfaceID IID_IVertexUpdator("IVertexUpdator", 1, 0)
Vertex_v1 Vertex
Define the latest version of the vertex class.