ATLAS Offline Software
PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/VertexMergingTool.h
Go to the documentation of this file.
1 // This is -*- c++ -*-
2 
3 /*
4  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 #ifndef VERTEXMERGINGTOOL_H
8 #define VERTEXMERGINGTOOL_H
9 
10 /**********************************************************************************
11  * @Package: LeptonTaggers
12  * @Class : VertexMergingTool
13  * @Author : Fudong He
14  * @Author : Rustem Ospanov
15  *
16  * @Brief :
17  *
18  * Merge the input vertices and output merged vertices.
19  *
20  **********************************************************************************/
21 
22 // Local
23 #include "IVertexFittingTool.h"
24 #include "IVertexMergingTool.h"
25 
26 // Athena
29 #include "GaudiKernel/ToolHandle.h"
30 
31 // xAOD
32 #include "xAODTracking/Vertex.h"
34 
35 namespace Prompt
36 {
37  //
38  // Vertex Merging Tool
39  //
40  class VertexMergingTool: public AthAlgTool, virtual public IVertexMergingTool
41  {
42  public:
43 
44  VertexMergingTool(const std::string &name,
45  const std::string &type,
46  const IInterface *parent);
47 
48  virtual StatusCode initialize() override;
49 
51  const FittingInput &input,
52  const xAOD::TrackParticle *tracklep,
53  std::vector<std::unique_ptr<xAOD::Vertex>> &init_vtxs,
54  const std::vector<const xAOD::TrackParticle *> &selected_tracks
55  ) override;
56 
57  private:
58 
59  bool passVertexSelection(const xAOD::Vertex *vtx) const;
60 
61  bool makeClusters(
62  std::vector<std::unique_ptr<VtxCluster>> &clusters,
63  std::vector<xAOD::Vertex*> &init_vtxs
64  );
65 
66  bool matchVtxToCluster(const VtxCluster &cluster, const xAOD::Vertex *vtx) const;
67 
69  VtxCluster &cluster, xAOD::Vertex* vtx
70  ) const;
71 
72  bool fitVertexCluster(
73  const FittingInput &input,
74  const xAOD::TrackParticle *tracklep,
75  VtxCluster &cluster
76  );
77 
78  double getMinNormDistVtx(const xAOD::Vertex *vtx1, const xAOD::Vertex *vtx2) const;
79 
80  //
81  // Properties:
82  //
84  this, "VertexFittingTool", "Prompt::VertexFittingSvc/PromptVertexFittingSvc"
85  };
86 
87  Gaudi::Property<bool> m_useMinNormDist {this, "useMinNormDist", false};
88 
89  Gaudi::Property<double> m_minFitProb {this, "minFitProb", 0.01};
90  Gaudi::Property<double> m_minDistanceClusterVtx {this, "minDistanceClusterVtx", 1.00};
91  };
92 }
93 
94 #endif
Prompt
Definition: DecoratePromptLeptonImproved.h:45
Prompt::VertexMergingTool::addInitVtxToCluster
bool addInitVtxToCluster(VtxCluster &cluster, xAOD::Vertex *vtx) const
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/src/VertexMergingTool.cxx:249
Prompt::VertexMergingTool::matchVtxToCluster
bool matchVtxToCluster(const VtxCluster &cluster, const xAOD::Vertex *vtx) const
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/src/VertexMergingTool.cxx:218
Prompt::VertexMergingTool::mergeInitVertices
virtual MergeResultNotOwner mergeInitVertices(const FittingInput &input, const xAOD::TrackParticle *tracklep, std::vector< std::unique_ptr< xAOD::Vertex >> &init_vtxs, const std::vector< const xAOD::TrackParticle * > &selected_tracks) override
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/src/VertexMergingTool.cxx:35
IVertexFittingTool.h
Prompt::VertexMergingTool::fitVertexCluster
bool fitVertexCluster(const FittingInput &input, const xAOD::TrackParticle *tracklep, VtxCluster &cluster)
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/src/VertexMergingTool.cxx:282
Prompt::FittingInput
Definition: IVertexFittingTool.h:60
Prompt::VertexMergingTool::VertexMergingTool
VertexMergingTool(const std::string &name, const std::string &type, const IInterface *parent)
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/src/VertexMergingTool.cxx:18
Prompt::VertexMergingTool::makeClusters
bool makeClusters(std::vector< std::unique_ptr< VtxCluster >> &clusters, std::vector< xAOD::Vertex * > &init_vtxs)
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/src/VertexMergingTool.cxx:171
AthAlgorithm.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Prompt::VertexMergingTool::m_useMinNormDist
Gaudi::Property< bool > m_useMinNormDist
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/VertexMergingTool.h:107
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
AthAlgTool.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
Prompt::VertexMergingTool::m_minDistanceClusterVtx
Gaudi::Property< double > m_minDistanceClusterVtx
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/VertexMergingTool.h:110
Prompt::VertexMergingTool::initialize
virtual StatusCode initialize() override
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/src/VertexMergingTool.cxx:27
Vertex.h
Prompt::VertexMergingTool::m_vertexFitterTool
ServiceHandle< Prompt::IVertexFittingTool > m_vertexFitterTool
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/VertexMergingTool.h:103
Prompt::VtxCluster
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:47
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Prompt::VertexMergingTool::passVertexSelection
bool passVertexSelection(const xAOD::Vertex *vtx) const
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/src/VertexMergingTool.cxx:149
TrackParticle.h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
Prompt::VertexMergingTool::getMinNormDistVtx
double getMinNormDistVtx(const xAOD::Vertex *vtx1, const xAOD::Vertex *vtx2) const
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/src/VertexMergingTool.cxx:327
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
AthAlgTool
Definition: AthAlgTool.h:26
IVertexMergingTool.h
Prompt::VertexMergingTool::m_minFitProb
Gaudi::Property< double > m_minFitProb
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/VertexMergingTool.h:109
ServiceHandle< Prompt::IVertexFittingTool >
Prompt::MergeResultNotOwner
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:69