ATLAS Offline Software
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 //
97 namespace 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:
114 
115 
120  AdaptiveMultiVertexFitter(const std::string& t, const std::string& n, const IInterface* p);
121 
127 
142  void
143  fit(std::vector<xAOD::Vertex*> & allVertices) const;
144 
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&
178  return IID_AdaptiveMultiVertexFitter;
179  }
180 
181  private:
182 
188  static bool
189  findAmongVertices(const xAOD::Vertex* vertex,const std::vector<xAOD::Vertex*> & previousVertices) ;
190 
198  std::vector<double>
199  collectWeights(TrackToVtxLink & tracklink) const;
200 
209  void
210  prepareCompatibility(xAOD::Vertex* newvertex) const;
211 
216  long int
218 
219 
225  double
227 
233  double
235 
241  bool
243 
249  double
251 
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
Trk::AdaptiveMultiVertexFitter::finalize
StatusCode finalize()
Definition: AdaptiveMultiVertexFitter.cxx:65
Trk::AdaptiveMultiVertexFitter::m_initialError
double m_initialError
Initial error in form of diagonal elements of the inverse of the covariance matrix (name is misleadin...
Definition: AdaptiveMultiVertexFitter.h:234
Trk::AdaptiveMultiVertexFitter::findAmongVertices
static bool findAmongVertices(const xAOD::Vertex *vertex, const std::vector< xAOD::Vertex * > &previousVertices)
Internal method to find a VxCandidate among a vector of VxCandidates.
Definition: AdaptiveMultiVertexFitter.cxx:396
Trk::AdaptiveMultiVertexFitter::prepareCompatibility
void prepareCompatibility(xAOD::Vertex *newvertex) const
Internal function to prepare the compatibility information of all the tracks of the new vertex (an IP...
Definition: AdaptiveMultiVertexFitter.cxx:369
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
IVertexSmoother.h
Trk::AdaptiveMultiVertexFitter::interfaceID
static const InterfaceID & interfaceID()
Definition: AdaptiveMultiVertexFitter.h:177
IImpactPoint3dEstimator.h
Trk::AdaptiveMultiVertexFitter::m_minweight
double m_minweight
Minimum weight a track as to have in order to be considered in the fit of one of the vertices.
Definition: AdaptiveMultiVertexFitter.h:250
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Trk::AdaptiveMultiVertexFitter::m_ImpactPoint3dEstimator
ToolHandle< Trk::IImpactPoint3dEstimator > m_ImpactPoint3dEstimator
Definition: AdaptiveMultiVertexFitter.h:269
Trk::AdaptiveMultiVertexFitter::m_maxDistToLinPoint
double m_maxDistToLinPoint
Maximum distance of linearization point of track to actual fitted vertex before needing to relineariz...
Definition: AdaptiveMultiVertexFitter.h:226
Trk::AdaptiveMultiVertexFitter::addVtxTofit
void addVtxTofit(xAOD::Vertex *pVtx) const
Definition: AdaptiveMultiVertexFitter.h:174
Trk::AdaptiveMultiVertexFitter::~AdaptiveMultiVertexFitter
virtual ~AdaptiveMultiVertexFitter()
destructor
Trk::AdaptiveMultiVertexFitter::initialize
StatusCode initialize()
Definition: AdaptiveMultiVertexFitter.cxx:50
Trk::AdaptiveMultiVertexFitter::m_VertexUpdator
ToolHandle< Trk::IVertexUpdator > m_VertexUpdator
Definition: AdaptiveMultiVertexFitter.h:275
beamspotman.n
n
Definition: beamspotman.py:731
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
IVertexAnnealingMaker.h
Trk::AdaptiveMultiVertexFitter::m_TrackCompatibilityEstimator
ToolHandle< Trk::IVertexTrackCompatibilityEstimator > m_TrackCompatibilityEstimator
Definition: AdaptiveMultiVertexFitter.h:266
Trk::AdaptiveMultiVertexFitter::collectWeights
std::vector< double > collectWeights(TrackToVtxLink &tracklink) const
Internal function to collect the weights of the tracks partecipating to all the possible vertices (ne...
Definition: AdaptiveMultiVertexFitter.cxx:283
Vertex.h
Trk::AdaptiveMultiVertexFitter::m_maxIterations
long int m_maxIterations
Max number of iterations.
Definition: AdaptiveMultiVertexFitter.h:217
Trk::AdaptiveMultiVertexFitter::m_maxRelativeShift
double m_maxRelativeShift
Maximum shift allowed for last iteration...
Definition: AdaptiveMultiVertexFitter.h:258
Trk::AdaptiveMultiVertexFitter::m_AnnealingMaker
ToolHandle< Trk::IVertexAnnealingMaker > m_AnnealingMaker
Definition: AdaptiveMultiVertexFitter.h:285
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::AdaptiveMultiVertexFitter::addVtxToFit
void addVtxToFit(xAOD::Vertex *pVtx) const
Adds a new MVFVxCandidate to a previous multi-vertex fit and fits everything together.
Definition: AdaptiveMultiVertexFitter.cxx:316
Trk::AdaptiveMultiVertexFitter::m_LinearizedTrackFactory
ToolHandle< Trk::IVertexLinearizedTrackFactory > m_LinearizedTrackFactory
Definition: AdaptiveMultiVertexFitter.h:260
IVertexUpdator.h
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
Trk::AdaptiveMultiVertexFitter::fit
void fit(std::vector< xAOD::Vertex * > &allVertices) const
fit all the provided MVFVxCandidate, which have to be already properly initialized.
Definition: AdaptiveMultiVertexFitter.cxx:72
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
Trk::AdaptiveMultiVertexFitter
Definition: AdaptiveMultiVertexFitter.h:110
IVertexLinearizedTrackFactory.h
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
AthAlgTool
Definition: AthAlgTool.h:26
Trk::AdaptiveMultiVertexFitter::m_doSmoothing
bool m_doSmoothing
True if smoothing after fit iterations has to be performed: otherwise the Smoother AlgoTool provided ...
Definition: AdaptiveMultiVertexFitter.h:242
IVertexTrackCompatibilityEstimator.h
Trk::AdaptiveMultiVertexFitter::AdaptiveMultiVertexFitter
AdaptiveMultiVertexFitter(const std::string &t, const std::string &n, const IInterface *p)
default constructor due to Athena interface
Definition: AdaptiveMultiVertexFitter.cxx:27
Trk::AdaptiveMultiVertexFitter::m_VertexSmoother
ToolHandle< Trk::IVertexSmoother > m_VertexSmoother
Definition: AdaptiveMultiVertexFitter.h:280