Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
BuildTruthTaus.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TAUANALYSISTOOLS_BUILDTRUTHTAUS_H
6 #define TAUANALYSISTOOLS_BUILDTRUTHTAUS_H
7 
8 /*
9  author: Dirk Duschinger
10  documentation: https://gitlab.cern.ch/atlas/athena/-/blob/main/PhysicsAnalysis/TauID/TauAnalysisTools/doc/README-TauTruthMatchingTool.rst
11 */
12 
13 // Framework include(s):
15 #include "AsgTools/AnaToolHandle.h"
19 
20 // Core include(s):
22 
23 // EDM include(s):
24 #include "xAODJet/JetContainer.h"
25 
26 // Local include(s):
28 
29 namespace TauAnalysisTools
30 {
31 
33  : public virtual TauAnalysisTools::IBuildTruthTaus
34  , public asg::AsgMetadataTool
35 {
39 
40 public:
41 
42  struct TruthTausEvent
43  : public ITruthTausEvent
44  {
45  const xAOD::TruthParticleContainer* m_xTruthTauContainerConst = nullptr;
46  const xAOD::TruthParticleContainer* m_xTruthMuonContainerConst = nullptr;
47  const xAOD::TruthParticleContainer* m_xTruthElectronContainerConst = nullptr;
48  const xAOD::JetContainer* m_xTruthJetContainerConst = nullptr;
49  xAOD::TruthParticleContainer* m_xTruthTauContainer = nullptr;
50  xAOD::TruthParticleAuxContainer* m_xTruthTauAuxContainer = nullptr;
51  const xAOD::TruthParticleContainer* m_xTruthParticleContainer = nullptr;
52  };
53 
54  BuildTruthTaus( const std::string& name );
55 
56  virtual ~BuildTruthTaus() = default;
57 
58  // initialize the tool
59  virtual StatusCode initialize() override;
60 
61  virtual void setTruthMatchingMode() override {
62  m_truthMatchingMode = true;
63  };
64 
65  virtual StatusCode retrieveTruthTaus() override;
66  virtual StatusCode retrieveTruthTaus(ITruthTausEvent& truthTausEvent) const override;
67 
68 
69 protected:
70  StatusCode retrieveTruthTaus(TruthTausEvent& truthTausEvent) const;
71 
72 
73 private:
74 
75  struct TauTruthInfo
76  {
77  size_t m_iNChargedPions = 0;
78  size_t m_iNNeutralPions = 0;
79  size_t m_iNChargedOthers = 0;
80  size_t m_iNNeutralOthers = 0;
82  std::vector<int> m_vDecayMode;
83  // default false, if there is a hadron in decay products, it is switched to true
84  bool m_bIsHadronicTau = false;
85 
86  // truth visible kinematic variables
87  TLorentzVector m_vTruthVisTLV;
88  TLorentzVector m_vTruthVisTLVCharged;
89  TLorentzVector m_vTruthVisTLVNeutral;
90 
91  // truth vertices
92  TVector3 m_vDecayVertex;
93  TVector3 m_vProdVertex;
94 
95  };
96 
97 
98  StatusCode buildTruthTausFromTruthParticles(TruthTausEvent& truthTausEvent) const;
99  StatusCode examineTruthTau(const xAOD::TruthParticle& xTruthParticle) const;
101  TauTruthInfo& truthInfo) const;
102  void printDecay(const xAOD::TruthParticle& xTruthParticle, int depth = 0) const;
103 
104 protected:
105 
106  TruthTausEvent m_truthTausEvent;
107 
108  // temporary, drop at the first occasion
110 
111 private:
112 
113  // properties
114  Gaudi::Property<bool> m_bWriteInvisibleFourMomentum{ this, "WriteInvisibleFourMomentum", false};
115  Gaudi::Property<bool> m_bWriteVisibleChargedFourMomentum{ this, "WriteVisibleChargedFourMomentum", false};
116  Gaudi::Property<bool> m_bWriteVisibleNeutralFourMomentum{ this, "WriteVisibleNeutralFourMomentum", false};
117  Gaudi::Property<bool> m_bWriteDecayModeVector{ this, "WriteDecayModeVector", true};
118  Gaudi::Property<bool> m_bWriteVertices{ this, "WriteVertices", true};
119 
120  // input containers
121  SG::ReadHandleKey<xAOD::TruthParticleContainer> m_truthTauInputContainer { this, "TruthTauContainerName", "TruthTaus", "Truth tau input container name (truth matching mode)" };
122  SG::ReadHandleKey<xAOD::TruthParticleContainer> m_truthParticleContainer { this, "TruthParticleContainerName", "TruthParticles", "Truth particles input container name" };
123  SG::ReadHandleKey<xAOD::TruthParticleContainer> m_truthElectronContainer { this, "TruthElectronContainerName", "TruthElectrons", "Truth electrons input container name" };
124  SG::ReadHandleKey<xAOD::TruthParticleContainer> m_truthMuonContainer { this, "TruthMuonContainerName", "TruthMuons", "Truth muons input container name" };
125  SG::ReadHandleKey<xAOD::JetContainer> m_truthJetContainer { this, "TruthJetContainerName", "AntiKt4TruthDressedWZJets", "Truth jets input container name" };
126  // output container
127  SG::WriteHandleKey<xAOD::TruthParticleContainer> m_truthTauOutputContainer { this, "NewTruthTauContainerName", "TruthTaus", "Truth tau output container name" };
128 
129  bool m_truthMatchingMode = false;
130 
132 
133 }; // class BuildTruthTaus
134 
135 }
136 #endif // TAUANALYSISTOOLS_BUILDTRUTHTAUS_H
TauAnalysisTools::BuildTruthTaus::examineTruthTau
StatusCode examineTruthTau(const xAOD::TruthParticle &xTruthParticle) const
Definition: BuildTruthTaus.cxx:216
TauAnalysisTools::BuildTruthTaus::m_bWriteInvisibleFourMomentum
Gaudi::Property< bool > m_bWriteInvisibleFourMomentum
Definition: BuildTruthTaus.h:114
TauAnalysisTools::BuildTruthTaus::TauTruthInfo::m_iNChargedOthers
size_t m_iNChargedOthers
Definition: BuildTruthTaus.h:79
TauAnalysisTools
Definition: TruthCollectionMakerTau.h:16
TauAnalysisTools::BuildTruthTaus::TauTruthInfo::m_vTruthVisTLV
TLorentzVector m_vTruthVisTLV
Definition: BuildTruthTaus.h:87
PropertyWrapper.h
asg::AnaToolHandle< IMCTruthClassifier >
egammaParameters::depth
@ depth
pointing depth of the shower as calculated in egammaqgcld
Definition: egammaParamDefs.h:276
TauAnalysisTools::BuildTruthTaus::m_tMCTruthClassifier
asg::AnaToolHandle< IMCTruthClassifier > m_tMCTruthClassifier
Definition: BuildTruthTaus.h:131
TauAnalysisTools::BuildTruthTaus::m_truthElectronContainer
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthElectronContainer
Definition: BuildTruthTaus.h:123
TauAnalysisTools::BuildTruthTaus::m_bWriteVertices
Gaudi::Property< bool > m_bWriteVertices
Definition: BuildTruthTaus.h:118
TauAnalysisTools::BuildTruthTaus::TauTruthInfo
Definition: BuildTruthTaus.h:76
TauAnalysisTools::BuildTruthTaus::TauTruthInfo::m_vDecayVertex
TVector3 m_vDecayVertex
Definition: BuildTruthTaus.h:92
TauAnalysisTools::BuildTruthTaus::printDecay
void printDecay(const xAOD::TruthParticle &xTruthParticle, int depth=0) const
Definition: BuildTruthTaus.cxx:436
TauAnalysisTools::BuildTruthTaus::setTruthMatchingMode
virtual void setTruthMatchingMode() override
Definition: BuildTruthTaus.h:61
TauAnalysisTools::IBuildTruthTaus::ITruthTausEvent
Declare the interface that the class provides.
Definition: IBuildTruthTaus.h:35
TauAnalysisTools::BuildTruthTaus::TauTruthInfo::m_iNNeutralPions
size_t m_iNNeutralPions
Definition: BuildTruthTaus.h:78
TauAnalysisTools::BuildTruthTaus::TauTruthInfo::m_bIsHadronicTau
bool m_bIsHadronicTau
Definition: BuildTruthTaus.h:84
TauAnalysisTools::BuildTruthTaus::retrieveTruthTaus
virtual StatusCode retrieveTruthTaus() override
Definition: BuildTruthTaus.cxx:82
TauAnalysisTools::BuildTruthTaus::TauTruthInfo::m_vDecayMode
std::vector< int > m_vDecayMode
Definition: BuildTruthTaus.h:82
TauAnalysisTools::BuildTruthTaus::TauTruthInfo::m_vTruthVisTLVCharged
TLorentzVector m_vTruthVisTLVCharged
Definition: BuildTruthTaus.h:88
TauAnalysisTools::BuildTruthTaus::m_truthTauOutputContainer
SG::WriteHandleKey< xAOD::TruthParticleContainer > m_truthTauOutputContainer
Definition: BuildTruthTaus.h:127
TauAnalysisTools::BuildTruthTaus::m_truthMatchingMode
bool m_truthMatchingMode
Definition: BuildTruthTaus.h:129
TauAnalysisTools::BuildTruthTaus::m_bWriteDecayModeVector
Gaudi::Property< bool > m_bWriteDecayModeVector
Definition: BuildTruthTaus.h:117
TauAnalysisTools::BuildTruthTaus::m_bWriteVisibleChargedFourMomentum
Gaudi::Property< bool > m_bWriteVisibleChargedFourMomentum
Definition: BuildTruthTaus.h:115
SG::ReadHandleKey< xAOD::TruthParticleContainer >
TauAnalysisTools::BuildTruthTaus::initialize
virtual StatusCode initialize() override
Definition: BuildTruthTaus.cxx:34
TauAnalysisTools::BuildTruthTaus
Definition: BuildTruthTaus.h:35
TauAnalysisTools::BuildTruthTaus::TauTruthInfo::m_vProdVertex
TVector3 m_vProdVertex
Definition: BuildTruthTaus.h:93
xAOD::TruthParticleAuxContainer_v1
Auxiliary store for the truth vertices.
Definition: TruthParticleAuxContainer_v1.h:27
IMCTruthClassifier.h
SG::WriteHandleKey< xAOD::TruthParticleContainer >
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TauAnalysisTools::BuildTruthTaus::m_bTruthTauAvailable
bool m_bTruthTauAvailable
Definition: BuildTruthTaus.h:109
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
WriteHandleKey.h
Property holding a SG store/key/clid from which a WriteHandle is made.
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
TauAnalysisTools::BuildTruthTaus::TauTruthInfo::m_iNChargedPions
size_t m_iNChargedPions
Definition: BuildTruthTaus.h:77
TauAnalysisTools::BuildTruthTaus::buildTruthTausFromTruthParticles
StatusCode buildTruthTausFromTruthParticles(TruthTausEvent &truthTausEvent) const
Definition: BuildTruthTaus.cxx:161
AnaToolHandle.h
IBuildTruthTaus.h
TauAnalysisTools::BuildTruthTaus::m_truthTausEvent
TruthTausEvent m_truthTausEvent
Definition: BuildTruthTaus.h:106
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
TauAnalysisTools::BuildTruthTaus::m_truthTauInputContainer
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthTauInputContainer
Definition: BuildTruthTaus.h:121
TauAnalysisTools::BuildTruthTaus::TauTruthInfo::m_vTruthVisTLVNeutral
TLorentzVector m_vTruthVisTLVNeutral
Definition: BuildTruthTaus.h:89
TauAnalysisTools::BuildTruthTaus::m_truthJetContainer
SG::ReadHandleKey< xAOD::JetContainer > m_truthJetContainer
Definition: BuildTruthTaus.h:125
JetContainer.h
TauAnalysisTools::BuildTruthTaus::m_truthMuonContainer
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthMuonContainer
Definition: BuildTruthTaus.h:124
asg::AsgMetadataTool
Base class for dual-use tools that provide file metadata access.
Definition: AsgMetadataTool.h:48
ASG_TOOL_CLASS
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Definition: AsgToolMacros.h:68
AsgMetadataTool.h
TauAnalysisTools::IBuildTruthTaus
Definition: IBuildTruthTaus.h:28
TauAnalysisTools::BuildTruthTaus::m_bWriteVisibleNeutralFourMomentum
Gaudi::Property< bool > m_bWriteVisibleNeutralFourMomentum
Definition: BuildTruthTaus.h:116
TauAnalysisTools::BuildTruthTaus::TauTruthInfo::m_iNNeutralOthers
size_t m_iNNeutralOthers
Definition: BuildTruthTaus.h:80
TauAnalysisTools::BuildTruthTaus::TauTruthInfo::m_iNChargedDaughters
size_t m_iNChargedDaughters
Definition: BuildTruthTaus.h:81
TauAnalysisTools::BuildTruthTaus::m_truthParticleContainer
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthParticleContainer
Definition: BuildTruthTaus.h:122
TauAnalysisTools::BuildTruthTaus::examineTruthTauDecay
StatusCode examineTruthTauDecay(const xAOD::TruthParticle &xTruthParticle, TauTruthInfo &truthInfo) const
Definition: BuildTruthTaus.cxx:349
TauAnalysisTools::BuildTruthTaus::~BuildTruthTaus
virtual ~BuildTruthTaus()=default