ATLAS Offline Software
PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.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 PROMPT_IVERTEXMERGINGTOOL_H
8 #define PROMPT_IVERTEXMERGINGTOOL_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 // Athena
25 #include "GaudiKernel/ToolHandle.h"
26 
27 // xAOD
28 #include "xAODTracking/Vertex.h"
30 
31 namespace Prompt
32 {
33  //======================================================================================================
34  // Vertex cluster helper class
35  //
36  struct VtxCluster
37  {
38  VtxCluster():vtxMerged(nullptr) {}
39 
40  std::vector<xAOD::Vertex*> vtxsInit;
41  std::vector<xAOD::Vertex *> vtxsFittedBad;
42 
43  std::vector<const xAOD::TrackParticle *> trksInit;
44  std::vector<const xAOD::TrackParticle *> trksCurr;
45 
46  std::unique_ptr<xAOD::Vertex> vtxMerged;
47  };
48 
49  //======================================================================================================
50  struct MergeResult
51  {
52  std::vector<std::unique_ptr<xAOD::Vertex>> vtxsNewMerged;
53 
54  std::vector<std::unique_ptr<xAOD::Vertex>> vtxsInitPassed;
55  std::vector<std::unique_ptr<xAOD::Vertex>> vtxsInitPassedNotMerged;
56  };
57 
59  {
60  std::vector<std::unique_ptr<xAOD::Vertex>> vtxsNewMerged;
61 
62  std::vector<xAOD::Vertex*> vtxsInitPassed;
63  std::vector<std::unique_ptr<xAOD::Vertex>> vtxsInitPassedNotMerged;
64  };
65 
66  struct FittingInput;
67 
68  //======================================================================================================
69  // Interface of Vertex Merging Tool
70  //
71  class IVertexMergingTool: public virtual IAlgTool
72  {
73  public:
75 
77  const FittingInput &input,
78  const xAOD::TrackParticle *tracklep,
79  std::vector<std::unique_ptr<xAOD::Vertex>> &initVtxs,
80  const std::vector<const xAOD::TrackParticle *> &selectedTracks
81  ) = 0;
82  };
83 }
84 
85 #endif
Prompt::VtxCluster::vtxsInit
std::vector< xAOD::Vertex * > vtxsInit
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:60
Prompt::VtxCluster::vtxsFittedBad
std::vector< xAOD::Vertex * > vtxsFittedBad
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:61
Prompt::MergeResultNotOwner::vtxsInitPassed
std::vector< xAOD::Vertex * > vtxsInitPassed
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:72
Prompt
Definition: DecoratePromptLeptonImproved.h:45
Prompt::MergeResult
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:61
Prompt::FittingInput
Definition: IVertexFittingTool.h:60
Prompt::IVertexMergingTool::DeclareInterfaceID
DeclareInterfaceID(Prompt::IVertexMergingTool, 1, 0)
Prompt::MergeResult::vtxsInitPassedNotMerged
std::vector< std::unique_ptr< xAOD::Vertex > > vtxsInitPassedNotMerged
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:65
AthAlgorithm.h
Prompt::MergeResultNotOwner::vtxsInitPassedNotMerged
std::vector< std::unique_ptr< xAOD::Vertex > > vtxsInitPassedNotMerged
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:73
Prompt::VtxCluster::VtxCluster
VtxCluster()
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:58
Prompt::IVertexMergingTool::mergeInitVertices
virtual MergeResultNotOwner mergeInitVertices(const FittingInput &input, const xAOD::TrackParticle *tracklep, std::vector< std::unique_ptr< xAOD::Vertex >> &initVtxs, const std::vector< const xAOD::TrackParticle * > &selectedTracks)=0
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
AthAlgTool.h
Vertex.h
Prompt::IVertexMergingTool
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:82
Prompt::VtxCluster::trksInit
std::vector< const xAOD::TrackParticle * > trksInit
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:63
Prompt::VtxCluster::vtxMerged
std::unique_ptr< xAOD::Vertex > vtxMerged
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:66
Prompt::MergeResult::vtxsInitPassed
std::vector< std::unique_ptr< xAOD::Vertex > > vtxsInitPassed
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:64
TrackParticle.h
Prompt::VtxCluster::trksCurr
std::vector< const xAOD::TrackParticle * > trksCurr
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:64
Prompt::MergeResultNotOwner::vtxsNewMerged
std::vector< std::unique_ptr< xAOD::Vertex > > vtxsNewMerged
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:70
Prompt::MergeResult::vtxsNewMerged
std::vector< std::unique_ptr< xAOD::Vertex > > vtxsNewMerged
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:62
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
Prompt::MergeResultNotOwner
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:69