ATLAS Offline Software
IVertexFittingTool.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 LEPTONTAGGERS_IVertexFittingTool_H
8 #define LEPTONTAGGERS_IVertexFittingTool_H
9 
10 /**********************************************************************************
11  * @Package: LeptonTaggers
12  * @Class : VertexFittingSvc
13  * @Author : Fudong He
14  * @Author : Rustem Ospanov
15  *
16  * @Brief :
17  *
18  * Fit the input ID tracks and produced the output vertex.
19  *
20  **********************************************************************************/
21 
22 // Athena
24 #include "GaudiKernel/IInterface.h"
25 #include "GaudiKernel/IService.h"
27 
28 // xAOD
30 #include "xAODTracking/Vertex.h"
31 
32 // C++
33 #include <string>
34 #include <vector>
35 
36 namespace Prompt
37 {
38  enum VtxType {
39  kTwoTrackVtx = 1,
40  kSimpleMergedVtx = 2,
41  kDeepMergedVtx = 3,
42  kIterativeFitVtx = 4,
45  kRefittedPriVtx = 7,
47  };
48 
49  struct FittingInput
50  {
51  FittingInput() = default;
52 
53  FittingInput(const xAOD::TrackParticleContainer *inDetTracks_p,
54  const xAOD::Vertex *priVtx_p,
55  const xAOD::Vertex *refittedPriVtx_p):
56  inDetTracks (inDetTracks_p),
57  priVtx (priVtx_p),
58  refittedPriVtx (refittedPriVtx_p){}
59 
61  const xAOD::Vertex *priVtx{nullptr};
62  const xAOD::Vertex *refittedPriVtx{nullptr};
64 
65  };
66 
67  //
68  // Interface of Vertex Merging Tool
69  //
70  class IVertexFittingTool: public virtual IAlgTool
71  {
72  public:
73 
75 
76  virtual std::unique_ptr<xAOD::Vertex> fitVertexWithPrimarySeed(
77  const FittingInput &input,
78  const std::vector<const xAOD::TrackParticle* > &tracks,
79  VtxType vtx
80  ) = 0;
81 
82  virtual std::unique_ptr<xAOD::Vertex> fitVertexWithSeed(
83  const FittingInput &input,
84  const std::vector<const xAOD::TrackParticle* > &tracks,
85  const Amg::Vector3D& seed,
86  VtxType vtxType
87  ) = 0;
88 
89  virtual bool isValidVertex(const xAOD::Vertex *vtx) const = 0;
90  };
91 }
92 
93 #endif
Prompt::kSimpleMergedVtx
@ kSimpleMergedVtx
Definition: IVertexFittingTool.h:60
Prompt
Definition: DecoratePromptLeptonImproved.h:45
Prompt::IVertexFittingTool::isValidVertex
virtual bool isValidVertex(const xAOD::Vertex *vtx) const =0
Prompt::FittingInput::refittedPriVtxWithoutLep
const xAOD::Vertex * refittedPriVtxWithoutLep
Definition: IVertexFittingTool.h:73
Prompt::kDeepMergedVtx
@ kDeepMergedVtx
Definition: IVertexFittingTool.h:61
Prompt::FittingInput::FittingInput
FittingInput()=default
Prompt::FittingInput
Definition: IVertexFittingTool.h:60
Prompt::kTwoTrackVtxWithoutLepton
@ kTwoTrackVtxWithoutLepton
Definition: IVertexFittingTool.h:63
Prompt::kRefittedPriVtxWithoutLep
@ kRefittedPriVtxWithoutLep
Definition: IVertexFittingTool.h:66
Prompt::IVertexFittingTool::DeclareInterfaceID
DeclareInterfaceID(Prompt::IVertexFittingTool, 1, 0)
Prompt::FittingInput::priVtx
const xAOD::Vertex * priVtx
Definition: IVertexFittingTool.h:71
Prompt::kRefittedPriVtx
@ kRefittedPriVtx
Definition: IVertexFittingTool.h:65
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
DataVector< xAOD::TrackParticle_v1 >
Vertex.h
Prompt::FittingInput::refittedPriVtx
const xAOD::Vertex * refittedPriVtx
Definition: IVertexFittingTool.h:72
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
IVertexFitter.h
Prompt::VtxType
VtxType
Definition: IVertexFittingTool.h:48
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
Prompt::IVertexFittingTool::fitVertexWithSeed
virtual std::unique_ptr< xAOD::Vertex > fitVertexWithSeed(const FittingInput &input, const std::vector< const xAOD::TrackParticle * > &tracks, const Amg::Vector3D &seed, VtxType vtxType)=0
Prompt::kIterativeFitVtx
@ kIterativeFitVtx
Definition: IVertexFittingTool.h:62
Prompt::kIterativeFitVtxWithoutLepton
@ kIterativeFitVtxWithoutLepton
Definition: IVertexFittingTool.h:64
Prompt::IVertexFittingTool
Definition: IVertexFittingTool.h:81
AthService.h
Prompt::FittingInput::inDetTracks
const xAOD::TrackParticleContainer * inDetTracks
Definition: IVertexFittingTool.h:70
TrackParticleContainer.h
Prompt::kTwoTrackVtx
@ kTwoTrackVtx
Definition: IVertexFittingTool.h:59
Prompt::IVertexFittingTool::fitVertexWithPrimarySeed
virtual std::unique_ptr< xAOD::Vertex > fitVertexWithPrimarySeed(const FittingInput &input, const std::vector< const xAOD::TrackParticle * > &tracks, VtxType vtx)=0