ATLAS Offline Software
Loading...
Searching...
No Matches
InDetJetFitterUtils.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5/***************************************************************************
6 InDetJetFitterUtils.cxx - Description
7 -------------------
8
9 begin : December 2007
10 authors: Giacinto Piacquadio (University of Freiburg)
11 email : nicola.giacinto.piacquadio@cern.ch
12 changes: new!
13
14 2007 (c) Atlas Detector Software
15
16 This class implements the some utilities for creating neutral tracks
17 from conversion, KS, Lambdas. Treatment of covariance matrices, jacobians,
18 ... is all correctly included.
19
20 ***************************************************************************/
21
22#ifndef TrkJetVxFitter_InDetJetFitterUtils_H
23#define TrkJetVxFitter_InDetJetFitterUtils_H
24
26#include "GaudiKernel/ToolHandle.h"
27#include "CLHEP/Matrix/SymMatrix.h"
28#include "CLHEP/Matrix/Matrix.h"
29#include "CLHEP/Vector/LorentzVector.h"
30//#include "TrkParticleBase/LinkToTrackParticleBase.h"
31//#include "TrkParticleBase/TrackParticleBaseCollection.h"
32//#include "TrkParticleBase/TrackParticleBase.h"
33//#include "TrkNeutralParameters/NeutralParameters.h"
35#include "xAODTracking/Vertex.h"
36
39
40namespace Trk {
41 class VxCandidate;
42 class LinearizedTrack;
43 class RecVertex;
44 class Vertex;
46 class ITrackLink;
49}
50
51namespace InDet {
52
53 static const InterfaceID IID_InDetJetFitterUtils("InDetJetFitterUtils", 1, 0);
54
56 {
57
58 public:
59
60 static const InterfaceID& interfaceID() {
62 }
63
64
65 virtual StatusCode initialize() override;
66
67 InDetJetFitterUtils(const std::string& t, const std::string& n, const IInterface* p);
68
70
71 //std::pair<double,double> compatibility(const Trk::ParametersBase<5,Trk::Charged> & measPerigee,
72 // const Trk::RecVertex & vertex) const;
73 //std::pair<double,double> compatibility(const Trk::ParametersBase<5,Trk::Neutral> & measPerigee,
74 // const Trk::RecVertex & vertex) const;
75
76 std::pair<double,double> compatibility(const Trk::TrackParameters & measPerigee,
77 const Trk::RecVertex & vertex) const;
78 std::pair<double,double> compatibility(const Trk::ParametersBase<5,Trk::Neutral> & measPerigee,
79 const Trk::RecVertex & vertex) const;
80
81 static double get3DLifetimeSignOfTrack(const Trk::TrackParameters & track,
82 const Amg::Vector3D & jetMomentum,
83 const Trk::RecVertex & primaryVertex) ;
84
85 int getTwoTrackVtxCharge(const Trk::VxCandidate & myVxCandidate) const;
86 int getTwoTrackVtxCharge(const xAOD::Vertex & myVxCandidate) const;
87
88 double getTwoTrackVtxMass(const Trk::VxCandidate & myVxCandidate,
89 double highestMomMass,
90 double lowestMomMass) const;
91
92 double getTwoTrackVtxMass(const xAOD::Vertex & myVxCandidate,
93 double highestMomMass,
94 double lowestMomMass) const;
95
96
97 std::pair<double,double> getDistanceAndErrorBetweenTwoVertices(const xAOD::Vertex &,
98 const Trk::RecVertex &) const;
99
100 std::pair<double,double> getD0andZ0IP(const Trk::TrackParameters & trackPerigee,
101 const Trk::Vertex & vertexToExtrapolateTo) const;
102
103 std::pair<double,double> getD0andZ0IPSig(const Trk::TrackParameters & trackPerigee,
104 const Trk::RecVertex & vertex) const;
105
106 const Trk::LinkToTrackParticleBase* findNeutralTrackParticleBase(const std::vector<const Trk::LinkToTrackParticleBase*> &,
107 const Trk::VxCandidate &) const;
108
109 static const Trk::LinkToTrackParticleBase* findNeutralTrackParticleBase(const std::vector<const Trk::LinkToTrackParticleBase*> &,
110 const xAOD::Vertex &) ;
111
112 static bool checkIfTrackIsInVector(const Trk::ITrackLink * trackToCheck,
113 const std::vector<const Trk::ITrackLink*> & vectorOfTracks) ;
114
115 static bool checkIfTrackIsInVector(const Trk::ITrackLink * trackToCheck,
116 const std::vector<const Trk::LinkToTrackParticleBase*> & vectorOfTracks) ;
117
118 static bool checkIfTrackIsInNeutralTrackVector(const Trk::ITrackLink * trackToCheck,
119 const std::vector<const Trk::LinkToTrackParticleBase*> & vectorOfNeutrals) ;
120
121 static bool checkIfTrackIsInV0CandidatesVector(const Trk::ITrackLink * trackToCheck,
122 const std::vector<const xAOD::Vertex*> & vectorOfVxCandidates) ;
123
124 static bool checkIfVxCandidateIsInVector(const xAOD::Vertex * vertexToCheck,
125 const std::vector<const xAOD::Vertex*> & vectorOfCandidates) ;
126
127 static CLHEP::HepLorentzVector fourMomentumAtVertex(const Trk::VxVertexOnJetAxis &) ;
128
129
130
131 private:
132
134 const AmgSymMatrix(3) & vrt_cov,
135 const AmgSymMatrix(3) & vrt_weight) const;
136
137
138
139 ToolHandle<Trk::IVertexLinearizedTrackFactory> m_LinearizedTrackFactory {this,"LinearizedTrackFactory","Trk::FullLinearizedTrackFactory/FullLinearizedTrackFactory",""};
140 ToolHandle<Trk::IExtrapolator> m_extrapolator {this,"Extrapolator","Trk::Extrapolator/InDetExtrapolator",""};
141
143
144 };//end class declaration
145
146}//end namespace Rec
147
148
149#endif
150
#define AmgSymMatrix(dim)
#define AmgMatrix(rows, cols)
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
static bool checkIfTrackIsInV0CandidatesVector(const Trk::ITrackLink *trackToCheck, const std::vector< const xAOD::Vertex * > &vectorOfVxCandidates)
std::pair< double, double > getD0andZ0IPSig(const Trk::TrackParameters &trackPerigee, const Trk::RecVertex &vertex) const
static CLHEP::HepLorentzVector fourMomentumAtVertex(const Trk::VxVertexOnJetAxis &)
const Trk::LinkToTrackParticleBase * findNeutralTrackParticleBase(const std::vector< const Trk::LinkToTrackParticleBase * > &, const Trk::VxCandidate &) const
ToolHandle< Trk::IVertexLinearizedTrackFactory > m_LinearizedTrackFactory
double getTwoTrackVtxMass(const Trk::VxCandidate &myVxCandidate, double highestMomMass, double lowestMomMass) const
static bool checkIfVxCandidateIsInVector(const xAOD::Vertex *vertexToCheck, const std::vector< const xAOD::Vertex * > &vectorOfCandidates)
std::pair< double, double > getD0andZ0IP(const Trk::TrackParameters &trackPerigee, const Trk::Vertex &vertexToExtrapolateTo) const
std::pair< AmgMatrix(3, 3), AmgSymMatrix(3)> getPosMomentumAndMomentumCovMatrix(const Trk::LinearizedTrack *linTrack, const AmgSymMatrix(3) &vrt_cov, const AmgSymMatrix(3) &vrt_weight) const
ToolHandle< Trk::IExtrapolator > m_extrapolator
InDetJetFitterUtils(const std::string &t, const std::string &n, const IInterface *p)
static const InterfaceID & interfaceID()
static double get3DLifetimeSignOfTrack(const Trk::TrackParameters &track, const Amg::Vector3D &jetMomentum, const Trk::RecVertex &primaryVertex)
static bool checkIfTrackIsInVector(const Trk::ITrackLink *trackToCheck, const std::vector< const Trk::ITrackLink * > &vectorOfTracks)
std::pair< double, double > compatibility(const Trk::TrackParameters &measPerigee, const Trk::RecVertex &vertex) const
int getTwoTrackVtxCharge(const Trk::VxCandidate &myVxCandidate) const
static bool checkIfTrackIsInNeutralTrackVector(const Trk::ITrackLink *trackToCheck, const std::vector< const Trk::LinkToTrackParticleBase * > &vectorOfNeutrals)
virtual StatusCode initialize() override
std::pair< double, double > getDistanceAndErrorBetweenTwoVertices(const xAOD::Vertex &, const Trk::RecVertex &) const
The base class for neutral and charged Track parameters.
Trk::RecVertex inherits from Trk::Vertex.
Definition RecVertex.h:44
This class is a simplest representation of a vertex candidate.
VxVertexOnJetAxis inherits from Vertex.
Eigen::Matrix< double, 3, 1 > Vector3D
Primary Vertex Finder.
static const InterfaceID IID_InDetJetFitterUtils("InDetJetFitterUtils", 1, 0)
Ensure that the ATLAS eigen extensions are properly loaded.
ParametersBase< TrackParametersDim, Charged > TrackParameters
Vertex_v1 Vertex
Define the latest version of the vertex class.