ATLAS Offline Software
PrimaryVertexReFitter.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_PRIMARYVERTEXREFITTER_H
8 #define PROMPT_PRIMARYVERTEXREFITTER_H
9 
10 /**********************************************************************************
11  * @Package: LeptonTaggers
12  * @Class : PrimaryVertexReFitter
13  * @Author : Fudong He
14  * @Author : Rustem Ospanov
15  * @Author : Kees Benkendorfer
16  *
17  * @Brief :
18  *
19  * Decorate leptons with secondary vertex algorithem output
20  *
21  **********************************************************************************/
22 
23 // Local
24 #include "VertexFittingTool.h"
25 
26 // Athena
28 #include "GaudiKernel/ToolHandle.h"
31 
32 // xAOD
34 
35 // ROOT
36 #include "TStopwatch.h"
37 
38 namespace Prompt
39 {
40  class PrimaryVertexReFitter: public AthAlgorithm
41  {
42  public:
43 
44  PrimaryVertexReFitter(const std::string& name, ISvcLocator* pSvcLocator);
45 
46  virtual StatusCode initialize() override;
47  virtual StatusCode execute() override;
48  virtual StatusCode finalize() override;
49 
50  private:
51 
53  const xAOD::TrackParticle* tracklep,
54  const xAOD::IParticle *lep,
55  const std::vector<const xAOD::TrackParticle*> &tracks,
56  xAOD::VertexContainer &refitVtxContainer);
57 
58 
59  private:
60 
63 
64  private:
65 
66  //
67  // Tools and services:
68  //
69  ToolHandle<Prompt::VertexFittingTool> m_vertexFitterTool {
70  this, "VertexFittingTool", "Prompt::VertexFittingTool/VertexFittingTool"
71  };
72 
73  //
74  // Properties:
75  //
76  Gaudi::Property<bool> m_printTime {this, "PrintTime", false};
77 
78  Gaudi::Property<std::string> m_distToRefittedPriVtxName {
79  this, "DistToRefittedPriVtxName", "default"
80  };
81  Gaudi::Property<std::string> m_normDistToRefittedPriVtxName {
82  this, "NormDistToRefittedPriVtxName", "default"
83  };
84  Gaudi::Property<std::string> m_lepVtxLinkName {
85  this, "RefittedVtxLinkName", "default"
86  };
87  Gaudi::Property<std::string> m_lepRefittedVtxWithoutLeptonLinkName {
88  this, "RefittedVtxWithoutLeptonLinkName", "default"
89  };
90 
91  TStopwatch m_timerAll;
92  TStopwatch m_timerExec;
93 
94  // Read/write handles
96  this, "InDetTrackParticlesKey", "InDetTrackParticles"
97  };
98 
100  this,
101  "LeptonContainerName",
102  "lepContainerNameDefault", "Name of lepton container"
103  };
105  this, "PriVertexContainerName", "PrimaryVertices",
106  "Name of primary vertex container"
107  };
109  this, "ReFitPriVtxName", "default"
110  };
111 
112  //
113  // Decorators:
114  //
115  std::unique_ptr<decoratorFloat_t> m_distToRefittedPriVtx;
116  std::unique_ptr<decoratorFloat_t> m_normdistToRefittedPriVtx;
117  std::unique_ptr<decoratorElemVtx_t> m_lepRefittedRMVtxLinkDec;
118  };
119 }
120 
121 #endif // PROMPT_PRIMARYVERTEXREFITTER_H
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
Prompt
Definition: DecoratePromptLeptonImproved.h:45
Prompt::PrimaryVertexReFitter::m_timerExec
TStopwatch m_timerExec
Definition: PrimaryVertexReFitter.h:114
Prompt::PrimaryVertexReFitter::m_vertexFitterTool
ToolHandle< Prompt::VertexFittingTool > m_vertexFitterTool
Definition: PrimaryVertexReFitter.h:91
Prompt::PrimaryVertexReFitter::m_timerAll
TStopwatch m_timerAll
Definition: PrimaryVertexReFitter.h:113
VertexFittingTool.h
Prompt::PrimaryVertexReFitter::m_distToRefittedPriVtx
std::unique_ptr< decoratorFloat_t > m_distToRefittedPriVtx
Definition: PrimaryVertexReFitter.h:137
Prompt::PrimaryVertexReFitter::m_leptonContainerKey
SG::ReadHandleKey< xAOD::IParticleContainer > m_leptonContainerKey
Definition: PrimaryVertexReFitter.h:121
Prompt::PrimaryVertexReFitter::finalize
virtual StatusCode finalize() override
Definition: PrimaryVertexReFitter.cxx:74
Prompt::PrimaryVertexReFitter::m_reFitPrimaryVertexKey
SG::WriteHandleKey< xAOD::VertexContainer > m_reFitPrimaryVertexKey
Definition: PrimaryVertexReFitter.h:130
Prompt::PrimaryVertexReFitter::m_lepRefittedRMVtxLinkDec
std::unique_ptr< decoratorElemVtx_t > m_lepRefittedRMVtxLinkDec
Definition: PrimaryVertexReFitter.h:139
Prompt::PrimaryVertexReFitter::PrimaryVertexReFitter
PrimaryVertexReFitter(const std::string &name, ISvcLocator *pSvcLocator)
Definition: PrimaryVertexReFitter.cxx:18
SG::ReadHandleKey< xAOD::TrackParticleContainer >
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
Prompt::FittingInput
Definition: IVertexFittingTool.h:60
Prompt::PrimaryVertexReFitter::m_normdistToRefittedPriVtx
std::unique_ptr< decoratorFloat_t > m_normdistToRefittedPriVtx
Definition: PrimaryVertexReFitter.h:138
Prompt::PrimaryVertexReFitter::m_normDistToRefittedPriVtxName
Gaudi::Property< std::string > m_normDistToRefittedPriVtxName
Definition: PrimaryVertexReFitter.h:103
Prompt::PrimaryVertexReFitter::m_lepVtxLinkName
Gaudi::Property< std::string > m_lepVtxLinkName
Definition: PrimaryVertexReFitter.h:106
AthAlgorithm.h
Prompt::PrimaryVertexReFitter::decorateLepWithReFitPrimaryVertex
bool decorateLepWithReFitPrimaryVertex(const FittingInput &input, const xAOD::TrackParticle *tracklep, const xAOD::IParticle *lep, const std::vector< const xAOD::TrackParticle * > &tracks, xAOD::VertexContainer &refitVtxContainer)
Definition: PrimaryVertexReFitter.cxx:243
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition: StoreGate/StoreGate/WriteHandleKey.h:40
SG::Decorator
Helper class to provide type-safe access to aux data.
Definition: Decorator.h:58
Prompt::PrimaryVertexReFitter::decoratorFloat_t
SG::AuxElement::Decorator< float > decoratorFloat_t
Definition: PrimaryVertexReFitter.h:83
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
Prompt::PrimaryVertexReFitter::decoratorElemVtx_t
SG::AuxElement::Decorator< ElementLink< xAOD::VertexContainer > > decoratorElemVtx_t
Definition: PrimaryVertexReFitter.h:84
Prompt::PrimaryVertexReFitter::initialize
virtual StatusCode initialize() override
Definition: PrimaryVertexReFitter.cxx:23
Prompt::PrimaryVertexReFitter::m_printTime
Gaudi::Property< bool > m_printTime
Definition: PrimaryVertexReFitter.h:98
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
AthAlgorithm
Definition: AthAlgorithm.h:47
WriteHandleKey.h
Property holding a SG store/key/clid from which a WriteHandle is made.
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
Prompt::PrimaryVertexReFitter::m_lepRefittedVtxWithoutLeptonLinkName
Gaudi::Property< std::string > m_lepRefittedVtxWithoutLeptonLinkName
Definition: PrimaryVertexReFitter.h:109
Prompt::PrimaryVertexReFitter::m_inDetTracksKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_inDetTracksKey
Definition: PrimaryVertexReFitter.h:117
VertexContainer.h
Prompt::PrimaryVertexReFitter::m_primaryVertexContainerKey
SG::ReadHandleKey< xAOD::VertexContainer > m_primaryVertexContainerKey
Definition: PrimaryVertexReFitter.h:126
Prompt::PrimaryVertexReFitter::m_distToRefittedPriVtxName
Gaudi::Property< std::string > m_distToRefittedPriVtxName
Definition: PrimaryVertexReFitter.h:100
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
Prompt::PrimaryVertexReFitter::execute
virtual StatusCode execute() override
Definition: PrimaryVertexReFitter.cxx:90