ATLAS Offline Software
EGElectronAmbiguityTool.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 DERIVATIONFRAMEWORK_EGELECTRONAMBIGUITYTOOL_H
6 #define DERIVATIONFRAMEWORK_EGELECTRONAMBIGUITYTOOL_H
7 
8 #include "GaudiKernel/ToolHandle.h"
9 
12 
13 #include "GaudiKernel/EventContext.h"
16 
18 #include "xAODEgamma/Electron.h"
22 #include "xAODTracking/Vertex.h"
24 
25 #include <string>
26 
27 namespace DerivationFramework {
28 
29  class EGElectronAmbiguityTool : public extends<AthAlgTool, IAugmentationTool>
30  {
31 
32  public:
33 
34  using base_class::base_class;
35 
36  virtual StatusCode initialize() override final;
37  virtual StatusCode addBranches(const EventContext& ctx) const override final;
38 
39  private:
41  this,
42  "ContainerName",
43  "Electrons",
44  "SG key of electron container"
45  };
47  this,
48  "VtxContainerName",
49  "PrimaryVertices",
50  "SG key of vertex container"
51  };
53  this,
54  "tpContainerName",
55  "InDetTrackParticles",
56  "SG key of track particles container"
57  };
58 
60  this,
61  "tpCName",
62  "GSFTrackParticles",
63  "SG key of TrackParticleInputContainer"
64  };
65 
66  // Write decoration handle keys
68  m_drv{ this, "DFCommonSimpleConvRadius", m_containerName, "DFCommonSimpleConvRadius", "" };
69 
71  m_dphiv{ this, "DFCommonSimpleConvPhi", m_containerName, "DFCommonSimpleConvPhi", "" };
72 
74  m_dmee{ this, "DFCommonSimpleMee", m_containerName, "DFCommonSimpleMee", "" };
75 
77  m_dmeeVtx{ this, "DFCommonSimpleMeeAtVtx", m_containerName, "DFCommonSimpleMeeAtVtx", "" };
78 
80  m_dsep{ this, "DFCommonSimpleSeparation", m_containerName, "DFCommonSimpleSeparation", "" };
81 
83  m_dambi{ this, "DFCommonAddAmbiguity", m_containerName, "DFCommonAddAmbiguity", "" };
84 
86  m_dtrv{ this, "DFCommonProdTrueRadius", m_containerName, "DFCommonProdTrueRadius", "" };
87 
89  m_dtpv{ this, "DFCommonProdTruePhi", m_containerName, "DFCommonProdTruePhi", "" };
90 
92  m_dtzv{ this, "DFCommonProdTrueZ", m_containerName, "DFCommonProdTrueZ", "" };
93 
94  struct DecorHandles {
95  DecorHandles (const EGElectronAmbiguityTool& tool, const EventContext& ctx);
105  };
106  friend struct DecorHandles;
107 
109  DecorHandles& dh,
110  std::unique_ptr<ConstDataVector<xAOD::TrackParticleContainer>>& tpC,
111  const xAOD::Electron* ele,
112  const xAOD::Vertex* pvtx) const;
113 
114  Gaudi::Property<bool> m_isMC{this, "isMC", false};
115 
116  // cuts to select the electron to run on
117  Gaudi::Property<double> m_elepTCut{
118  this, "pTCut", 9000., "minimum pT for an electron to be studied"};
119  Gaudi::Property<std::string> m_idCut{
120  this, "idCut", "DFCommonElectronsLHLoose", "minimal quality for an electron to be studied"};
121 
122  // cuts to select the other track
123  Gaudi::Property<unsigned int> m_nSiCut{
124  this, "nSiCut", 7, "minimum number of Si hits in the other track"};
125  Gaudi::Property<double> m_dctCut{
126  this, "DCTCut", 0.02, "second separation cut"};
127  Gaudi::Property<double> m_sepCut{
128  this, "SeparationCut", 1., "first separation cut"};
129  Gaudi::Property<double> m_dzCut{
130  this, "dzsinTCut", 0.5, "max dz sinTheta between ele and other tracks"};
131 
132  // cuts to define the various types :
133  // ambi = -1 : no other track, 0 : other track exists but no good gamma reco,
134  // 1 : gamma*, 2 : material conversion
135  Gaudi::Property<double> m_rvECCut{
136  this, "radiusCut", 20, "minimum radius to be classified as external conversion"};
137  Gaudi::Property<double> m_meeAtVtxECCut{
138  this, "meeAtVtxCut", 100, "maximal mass at vertex to be classified as external conversion"};
139  Gaudi::Property<double> m_meeICCut{
140  this, "meeCut", 100, "maximal mass at primary vertex to be classified as gamma*"};
141  };
142 }
143 
144 #endif // DERIVATIONFRAMEWORK_EGCONVERSIONINFOTOOL_H
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
SG::WriteDecorHandleKey< xAOD::ElectronContainer >
DerivationFramework::EGElectronAmbiguityTool::m_dtrv
SG::WriteDecorHandleKey< xAOD::ElectronContainer > m_dtrv
Definition: EGElectronAmbiguityTool.h:86
DerivationFramework::EGElectronAmbiguityTool::m_dmee
SG::WriteDecorHandleKey< xAOD::ElectronContainer > m_dmee
Definition: EGElectronAmbiguityTool.h:74
DerivationFramework::EGElectronAmbiguityTool::initialize
virtual StatusCode initialize() override final
Definition: EGElectronAmbiguityTool.cxx:47
DerivationFramework::EGElectronAmbiguityTool::m_dambi
SG::WriteDecorHandleKey< xAOD::ElectronContainer > m_dambi
Definition: EGElectronAmbiguityTool.h:83
DerivationFramework::EGElectronAmbiguityTool::m_tpContainerName
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_tpContainerName
Definition: EGElectronAmbiguityTool.h:52
DerivationFramework::EGElectronAmbiguityTool::DecorHandles::dtrv
SG::WriteDecorHandle< xAOD::ElectronContainer, float > dtrv
Definition: EGElectronAmbiguityTool.h:102
DerivationFramework::EGElectronAmbiguityTool::DecorHandles::dtzv
SG::WriteDecorHandle< xAOD::ElectronContainer, float > dtzv
Definition: EGElectronAmbiguityTool.h:104
ConstDataVector.h
DataVector adapter that acts like it holds const pointers.
IAugmentationTool.h
DerivationFramework::EGElectronAmbiguityTool::m_drv
SG::WriteDecorHandleKey< xAOD::ElectronContainer > m_drv
Definition: EGElectronAmbiguityTool.h:68
DerivationFramework::EGElectronAmbiguityTool::m_sepCut
Gaudi::Property< double > m_sepCut
Definition: EGElectronAmbiguityTool.h:127
DerivationFramework::EGElectronAmbiguityTool::m_nSiCut
Gaudi::Property< unsigned int > m_nSiCut
Definition: EGElectronAmbiguityTool.h:123
DerivationFramework::EGElectronAmbiguityTool::m_elepTCut
Gaudi::Property< double > m_elepTCut
Definition: EGElectronAmbiguityTool.h:117
DerivationFramework::EGElectronAmbiguityTool::m_rvECCut
Gaudi::Property< double > m_rvECCut
Definition: EGElectronAmbiguityTool.h:135
DerivationFramework::EGElectronAmbiguityTool::m_dctCut
Gaudi::Property< double > m_dctCut
Definition: EGElectronAmbiguityTool.h:125
DerivationFramework::EGElectronAmbiguityTool::DecorHandles::drv
SG::WriteDecorHandle< xAOD::ElectronContainer, float > drv
Definition: EGElectronAmbiguityTool.h:96
DerivationFramework::EGElectronAmbiguityTool::m_tpCName
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_tpCName
Definition: EGElectronAmbiguityTool.h:59
DerivationFramework::EGElectronAmbiguityTool::addBranches
virtual StatusCode addBranches(const EventContext &ctx) const override final
Definition: EGElectronAmbiguityTool.cxx:83
PyPoolBrowser.dh
dh
Definition: PyPoolBrowser.py:102
SG::ReadHandleKey< xAOD::ElectronContainer >
DerivationFramework::EGElectronAmbiguityTool::m_idCut
Gaudi::Property< std::string > m_idCut
Definition: EGElectronAmbiguityTool.h:119
DerivationFramework::EGElectronAmbiguityTool::m_dsep
SG::WriteDecorHandleKey< xAOD::ElectronContainer > m_dsep
Definition: EGElectronAmbiguityTool.h:80
DerivationFramework::EGElectronAmbiguityTool::m_VtxContainerName
SG::ReadHandleKey< xAOD::VertexContainer > m_VtxContainerName
Definition: EGElectronAmbiguityTool.h:46
DerivationFramework::EGElectronAmbiguityTool::m_dzCut
Gaudi::Property< double > m_dzCut
Definition: EGElectronAmbiguityTool.h:129
ElectronContainer.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:100
AthAlgTool.h
WriteDecorHandle.h
Handle class for adding a decoration to an object.
DerivationFramework
THE reconstruction tool.
Definition: ParticleSortingAlg.h:24
Vertex.h
DerivationFramework::EGElectronAmbiguityTool::DecorHandles::dmee
SG::WriteDecorHandle< xAOD::ElectronContainer, float > dmee
Definition: EGElectronAmbiguityTool.h:98
DerivationFramework::EGElectronAmbiguityTool::DecorHandles
Definition: EGElectronAmbiguityTool.h:94
DerivationFramework::EGElectronAmbiguityTool::m_meeAtVtxECCut
Gaudi::Property< double > m_meeAtVtxECCut
Definition: EGElectronAmbiguityTool.h:137
DerivationFramework::EGElectronAmbiguityTool::m_dmeeVtx
SG::WriteDecorHandleKey< xAOD::ElectronContainer > m_dmeeVtx
Definition: EGElectronAmbiguityTool.h:77
DerivationFramework::EGElectronAmbiguityTool::m_dphiv
SG::WriteDecorHandleKey< xAOD::ElectronContainer > m_dphiv
Definition: EGElectronAmbiguityTool.h:71
DerivationFramework::EGElectronAmbiguityTool::DecorHandles::dphiv
SG::WriteDecorHandle< xAOD::ElectronContainer, float > dphiv
Definition: EGElectronAmbiguityTool.h:97
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:452
DerivationFramework::EGElectronAmbiguityTool::m_isMC
Gaudi::Property< bool > m_isMC
Definition: EGElectronAmbiguityTool.h:114
xAOD::Electron_v1
Definition: Electron_v1.h:34
TrackParticle.h
DerivationFramework::EGElectronAmbiguityTool::m_dtpv
SG::WriteDecorHandleKey< xAOD::ElectronContainer > m_dtpv
Definition: EGElectronAmbiguityTool.h:89
VertexContainer.h
DerivationFramework::EGElectronAmbiguityTool::DecorHandles::dmeeVtx
SG::WriteDecorHandle< xAOD::ElectronContainer, float > dmeeVtx
Definition: EGElectronAmbiguityTool.h:99
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
DerivationFramework::EGElectronAmbiguityTool::DecorHandles::DecorHandles
DecorHandles(const EGElectronAmbiguityTool &tool, const EventContext &ctx)
Definition: EGElectronAmbiguityTool.cxx:69
ConstDataVector
DataVector adapter that acts like it holds const pointers.
Definition: ConstDataVector.h:76
DerivationFramework::EGElectronAmbiguityTool::m_meeICCut
Gaudi::Property< double > m_meeICCut
Definition: EGElectronAmbiguityTool.h:139
DerivationFramework::EGElectronAmbiguityTool
Definition: EGElectronAmbiguityTool.h:30
DerivationFramework::EGElectronAmbiguityTool::m_containerName
SG::ReadHandleKey< xAOD::ElectronContainer > m_containerName
Definition: EGElectronAmbiguityTool.h:40
DerivationFramework::EGElectronAmbiguityTool::DecorHandles::dambi
SG::WriteDecorHandle< xAOD::ElectronContainer, int > dambi
Definition: EGElectronAmbiguityTool.h:101
Electron.h
DerivationFramework::EGElectronAmbiguityTool::decorateSimple
StatusCode decorateSimple(DecorHandles &dh, std::unique_ptr< ConstDataVector< xAOD::TrackParticleContainer >> &tpC, const xAOD::Electron *ele, const xAOD::Vertex *pvtx) const
Definition: EGElectronAmbiguityTool.cxx:243
DerivationFramework::EGElectronAmbiguityTool::m_dtzv
SG::WriteDecorHandleKey< xAOD::ElectronContainer > m_dtzv
Definition: EGElectronAmbiguityTool.h:92
DerivationFramework::EGElectronAmbiguityTool::DecorHandles::dsep
SG::WriteDecorHandle< xAOD::ElectronContainer, float > dsep
Definition: EGElectronAmbiguityTool.h:100
TrackParticleContainer.h
DerivationFramework::EGElectronAmbiguityTool::DecorHandles::dtpv
SG::WriteDecorHandle< xAOD::ElectronContainer, float > dtpv
Definition: EGElectronAmbiguityTool.h:103