5#ifndef TAUANALYSISTOOLS_BUILDTRUTHTAUS_H
6#define TAUANALYSISTOOLS_BUILDTRUTHTAUS_H
33namespace ADD_CMODE(TauAnalysisTools)
37 :
public virtual IBuildTruthTaus
47 :
public ITruthTausEvent
58 BuildTruthTaus(
const std::string& name );
60 virtual ~BuildTruthTaus() =
default;
65 virtual void setTruthMatchingMode()
override {
66 m_truthMatchingMode =
true;
69 virtual StatusCode retrieveTruthTaus()
override;
70 virtual StatusCode retrieveTruthTaus(ITruthTausEvent& truthTausEvent,
const EventContext& ctx)
const override;
72 Gaudi::Property<bool> m_bForceCheckTruthMatch{
this,
"ForceCheckTruthMatch",
false};
75 StatusCode retrieveTruthTausImpl(TruthTausEvent& truthTausEvent,
const EventContext& ctx)
const;
82 size_t m_iNChargedPions = 0;
83 size_t m_iNNeutralPions = 0;
84 size_t m_iNChargedOthers = 0;
85 size_t m_iNNeutralOthers = 0;
86 size_t m_iNChargedDaughters = 0;
87 std::vector<int> m_vDecayMode;
89 bool m_bIsHadronicTau =
false;
92 TLorentzVector m_vTruthVisTLV;
93 TLorentzVector m_vTruthVisTLVCharged;
94 std::vector<TLorentzVector> m_TLVCharged;
95 TLorentzVector m_vTruthVisTLVNeutral;
96 std::vector<TLorentzVector> m_TLVNeutral;
99 TVector3 m_vDecayVertex;
100 TVector3 m_vProdVertex;
105 StatusCode buildTruthTausFromTruthParticles(TruthTausEvent& truthTausEvent,
const EventContext& ctx)
const;
108 TauTruthInfo& truthInfo)
const;
113 TruthTausEvent m_truthTausEvent;
116 bool m_bTruthTauAvailable{};
121 Gaudi::Property<bool> m_bWriteInvisibleFourMomentum{
this,
"WriteInvisibleFourMomentum",
false};
122 Gaudi::Property<bool> m_bWriteVisibleChargedFourMomentum{
this,
"WriteVisibleChargedFourMomentum",
false};
123 Gaudi::Property<bool> m_bWriteVisibleChargedFourMomentumComponent{
this,
"WriteVisibleChargedFourMomentumComponent",
false};
124 Gaudi::Property<bool> m_bWriteVisibleNeutralFourMomentum{
this,
"WriteVisibleNeutralFourMomentum",
false};
125 Gaudi::Property<bool> m_bWriteVisibleNeutralFourMomentumComponent{
this,
"WriteVisibleNeutralFourMomentumComponent",
false};
126 Gaudi::Property<bool> m_bWriteDecayModeVector{
this,
"WriteDecayModeVector",
true};
127 Gaudi::Property<bool> m_bWriteVertices{
this,
"WriteVertices",
true};
150 bool m_truthMatchingMode =
false;