ATLAS Offline Software
MuSAVtxFitterTool.h
Go to the documentation of this file.
1 /*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MUSAVTXFITTERTOOL_H
6 #define MUSAVTXFITTERTOOL_H
7 
9 #include "GaudiKernel/ToolHandle.h"
12 #include "xAODMuon/MuonContainer.h"
19 
20 namespace Rec {
21  static const InterfaceID IID_MuSAVtxFitterTool("MuSAVtxFitterTool", 1, 0);
22 
24  {
25  public:
26  MuSAVtxFitterTool(const std::string& type, const std::string& name, const IInterface* parent);
28  virtual StatusCode initialize() override;
29 
30  static const InterfaceID& interfaceID() { return IID_MuSAVtxFitterTool;}
31 
47  struct WrkVrt {
48 
49  bool isGood = true;
50  std::deque<long int> selectedTrackIndices;
51  std::deque<long int> associatedTrackIndices;
52  std::vector<std::shared_ptr<const xAOD::TrackParticle>> newExtrapolatedTracks;
53  std::vector<const xAOD::Muon*> muonCandidates;
55  TLorentzVector mom;
56  std::vector<double> cov;
57  double chi2 = 0;
58  double chi2Core = 0;
59  std::vector<double> chi2PerTrk;
60  long int charge = 0;
61  std::vector< std::vector<double> > trkAtVrt;
62  double minOpAng = 0;
64  double closestWrkVrtValue = 0;
65 
66  inline double ndof() const { return 2.0*( selectedTrackIndices.size() + associatedTrackIndices.size() ) - 3.0; } //currently always 1, because only 2trk fit, but left for future developments.
67  inline double ndofCore() const { return 2.0*( selectedTrackIndices.size() ) - 3.0; } //currently always 1, because only 2trk fit, but left for future developments. Uses only seeding MSTPs ("core")
68  inline unsigned nTracksTotal() const { return selectedTrackIndices.size() + associatedTrackIndices.size(); }
69  inline double fitQuality() const { return chi2 / ndof(); }
70  };
71 
72  // takes in MSTPs from SA muons and extrapolates them backwards without any constraint, producing a new xAOD::TrackParticle for input to the vertex fitter
73  std::unique_ptr<xAOD::TrackParticle> extrapolateMuSA(const xAOD::TrackParticle& trk, const xAOD::EventInfo& eventInfo, const EventContext& ctx) const;
74 
75  // performs the MuSA vertex fit routine using the VKalVrtFitter tool
76  StatusCode doMuSAVtxFit(std::vector<MuSAVtxFitterTool::WrkVrt>& workVerticesContainer, const xAOD::MuonContainer& muonContainer, const xAOD::EventInfo& eventInfo, const EventContext& ctx) const;
77 
78  // does post-fit selections on vertices in the workVerticesContainer
79  StatusCode doPostFitSelections(std::vector<MuSAVtxFitterTool::WrkVrt>& workVerticesContainer) const;
80 
81  // selects the best remaining vertices from the workVerticesContainer and resolves ambiguities to produce unique track-to-vertex associations
82  StatusCode selectBestVertices(std::vector<MuSAVtxFitterTool::WrkVrt>& workVerticesContainer) const;
83 
84  private:
85 
86  ToolHandle<Trk::ITrkVKalVrtFitter> m_vertexFitter{
87  this, "VertexFitterTool", "Trk::TrkVKalVrtFitter", "Vertex fitter tool"};
88  ToolHandle <Trk::IExtrapolator> m_extrapolator{
89  this,"Extrapolator","Trk::Extrapolator/AtlasExtrapolator","ATLAS Extrapolator tool"};
90 
91  DoubleProperty m_etaCutMSTP{this, "etaCutMSTP", 2.5, "Maximum |eta| of input MSTPs"};
92  DoubleProperty m_baseChi2Cut{this, "baseChi2Cut", 50., "Maximum allowed chi2 of saved vertices"};
93  Gaudi::Property<bool> m_doValidation{this, "doValidation", false, "Vertex every MSTP in input as part of validation process"};
94 
95  };
96 }
97 
98 #endif
muonContainer
xAOD::MuonContainer * muonContainer
Definition: TrigGlobEffCorrValidation.cxx:188
Rec::MuSAVtxFitterTool::WrkVrt
Represents a working vertex structure used in VKalVrt fitting.
Definition: MuSAVtxFitterTool.h:47
Rec::MuSAVtxFitterTool::WrkVrt::associatedTrackIndices
std::deque< long int > associatedTrackIndices
list if indices in TrackParticleContainer for selectedBaseTracks – CURRENTLY UNUSED,...
Definition: MuSAVtxFitterTool.h:51
Rec::MuSAVtxFitterTool::WrkVrt::muonCandidates
std::vector< const xAOD::Muon * > muonCandidates
list of associated new extrapolated tracks
Definition: MuSAVtxFitterTool.h:53
Rec::MuSAVtxFitterTool::WrkVrt::minOpAng
double minOpAng
list of track parameters wrt the reconstructed vertex
Definition: MuSAVtxFitterTool.h:62
TrackParameters.h
Rec::MuSAVtxFitterTool::WrkVrt::selectedTrackIndices
std::deque< long int > selectedTrackIndices
flagged true for good vertex candidates
Definition: MuSAVtxFitterTool.h:50
Rec::MuSAVtxFitterTool::WrkVrt::trkAtVrt
std::vector< std::vector< double > > trkAtVrt
total charge of the vertex
Definition: MuSAVtxFitterTool.h:61
Rec::MuSAVtxFitterTool::WrkVrt::fitQuality
double fitQuality() const
Definition: MuSAVtxFitterTool.h:69
Rec::MuSAVtxFitterTool::~MuSAVtxFitterTool
~MuSAVtxFitterTool()
Rec::MuSAVtxFitterTool::WrkVrt::chi2
double chi2
VKalVrt fit covariance.
Definition: MuSAVtxFitterTool.h:57
Rec::MuSAVtxFitterTool::WrkVrt::mom
TLorentzVector mom
VKalVrt fit vertex position.
Definition: MuSAVtxFitterTool.h:55
IExtrapolator.h
Rec::MuSAVtxFitterTool::WrkVrt::chi2Core
double chi2Core
VKalVrt fit chi2 result.
Definition: MuSAVtxFitterTool.h:58
Rec::MuSAVtxFitterTool::m_doValidation
Gaudi::Property< bool > m_doValidation
Definition: MuSAVtxFitterTool.h:93
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
TrkVKalVrtFitter.h
Rec::MuSAVtxFitterTool::WrkVrt::ndof
double ndof() const
stores the value of some observable to the closest WrkVrt ( observable = e.g. significance ) – CURREN...
Definition: MuSAVtxFitterTool.h:66
Rec::MuSAVtxFitterTool::WrkVrt::nTracksTotal
unsigned nTracksTotal() const
Definition: MuSAVtxFitterTool.h:68
Rec::MuSAVtxFitterTool::WrkVrt::ndofCore
double ndofCore() const
Definition: MuSAVtxFitterTool.h:67
Rec::MuSAVtxFitterTool::initialize
virtual StatusCode initialize() override
Definition: MuSAVtxFitterTool.cxx:27
Rec::MuSAVtxFitterTool::doPostFitSelections
StatusCode doPostFitSelections(std::vector< MuSAVtxFitterTool::WrkVrt > &workVerticesContainer) const
Definition: MuSAVtxFitterTool.cxx:186
Rec::MuSAVtxFitterTool::m_extrapolator
ToolHandle< Trk::IExtrapolator > m_extrapolator
Definition: MuSAVtxFitterTool.h:88
Rec
Name: MuonSpContainer.h Package : offline/Reconstruction/MuonIdentification/muonEvent.
Definition: FakeTrackBuilder.h:10
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
Rec::MuSAVtxFitterTool::extrapolateMuSA
std::unique_ptr< xAOD::TrackParticle > extrapolateMuSA(const xAOD::TrackParticle &trk, const xAOD::EventInfo &eventInfo, const EventContext &ctx) const
Definition: MuSAVtxFitterTool.cxx:43
Rec::MuSAVtxFitterTool::WrkVrt::cov
std::vector< double > cov
VKalVrt fit vertex 4-momentum.
Definition: MuSAVtxFitterTool.h:56
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
ITrackToVertex.h
Rec::MuSAVtxFitterTool::WrkVrt::pos
Amg::Vector3D pos
list of associated muon candidates
Definition: MuSAVtxFitterTool.h:54
Rec::MuSAVtxFitterTool::doMuSAVtxFit
StatusCode doMuSAVtxFit(std::vector< MuSAVtxFitterTool::WrkVrt > &workVerticesContainer, const xAOD::MuonContainer &muonContainer, const xAOD::EventInfo &eventInfo, const EventContext &ctx) const
Definition: MuSAVtxFitterTool.cxx:69
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
Rec::MuSAVtxFitterTool::m_baseChi2Cut
DoubleProperty m_baseChi2Cut
Definition: MuSAVtxFitterTool.h:92
Rec::MuSAVtxFitterTool
Definition: MuSAVtxFitterTool.h:24
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
IVertexFitter.h
EventInfo.h
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
MuonContainer.h
Rec::MuSAVtxFitterTool::MuSAVtxFitterTool
MuSAVtxFitterTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: MuSAVtxFitterTool.cxx:19
Rec::MuSAVtxFitterTool::WrkVrt::newExtrapolatedTracks
std::vector< std::shared_ptr< const xAOD::TrackParticle > > newExtrapolatedTracks
list if indices in TrackParticleContainer for associatedTracks – CURRENTLY UNUSED,...
Definition: MuSAVtxFitterTool.h:52
VertexContainer.h
Rec::MuSAVtxFitterTool::interfaceID
static const InterfaceID & interfaceID()
Definition: MuSAVtxFitterTool.h:30
Rec::MuSAVtxFitterTool::WrkVrt::closestWrkVrtIndex
int closestWrkVrtIndex
minimum opening angle between tracks
Definition: MuSAVtxFitterTool.h:63
Rec::MuSAVtxFitterTool::WrkVrt::charge
long int charge
list of VKalVrt fit chi2 for each track
Definition: MuSAVtxFitterTool.h:60
Rec::MuSAVtxFitterTool::WrkVrt::chi2PerTrk
std::vector< double > chi2PerTrk
VKalVrt fit chi2 result.
Definition: MuSAVtxFitterTool.h:59
Rec::MuSAVtxFitterTool::WrkVrt::closestWrkVrtValue
double closestWrkVrtValue
stores the index of the closest WrkVrt in std::vector<WrkVrt> – CURRENTLY UNUSED, LEFT FOR FUTURE DEV...
Definition: MuSAVtxFitterTool.h:64
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
Rec::MuSAVtxFitterTool::m_etaCutMSTP
DoubleProperty m_etaCutMSTP
Definition: MuSAVtxFitterTool.h:91
AthAlgTool
Definition: AthAlgTool.h:26
Rec::MuSAVtxFitterTool::WrkVrt::isGood
bool isGood
Definition: MuSAVtxFitterTool.h:49
TrackParticleContainer.h
Rec::MuSAVtxFitterTool::m_vertexFitter
ToolHandle< Trk::ITrkVKalVrtFitter > m_vertexFitter
Definition: MuSAVtxFitterTool.h:86
Rec::MuSAVtxFitterTool::selectBestVertices
StatusCode selectBestVertices(std::vector< MuSAVtxFitterTool::WrkVrt > &workVerticesContainer) const
Definition: MuSAVtxFitterTool.cxx:203