ATLAS Offline Software
Loading...
Searching...
No Matches
HadronOriginClassifier.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5/*
6
7 * @author Mirko Casolino, version w/o barcodes by Andrii Verbytskyi 2024
8 * @date June 2015
9 * @brief tool to compute oring of hadron to flag ttbar+HF
10 *
11 */
12
13#ifndef DerivationFrameworkMCTruth_HadronOriginClassifier_H
14#define DerivationFrameworkMCTruth_HadronOriginClassifier_H
15
22
23#include <map>
24#include <set>
25#include <string>
26
27namespace DerivationFramework{
28
29
31
32
33 public:
34 HadronOriginClassifier(const std::string& t, const std::string& n, const IInterface* p);
36
37 virtual StatusCode initialize() override;
38
39 typedef enum {extrajet=0,
40 c_MPI =-1, b_MPI =1,
41 c_FSR =-2, b_FSR =2,
45
46 enum class GEN_id { Pythia6=0, Pythia8=1, HerwigPP=2, Sherpa=3 };
47
48 std::map<const xAOD::TruthParticle*, HF_id> GetOriginMap(const EventContext& ctx) const;
49
50 private:
51
52 void fillHadronMap(std::set<const xAOD::TruthParticle*>& usedHadron, std::map<const xAOD::TruthParticle*,int>& mainHadronMap, const xAOD::TruthParticle* mainhad, const xAOD::TruthParticle* ihad, bool decayed=false) const;
53
54 void buildPartonsHadronsMaps(const EventContext& ctx,
55 std::map<const xAOD::TruthParticle*,int>& mainHadronMap,
56 std::map<const xAOD::TruthParticle*,HF_id>& partonsOrigin) const;
57
58 bool isCHadronFromB(const xAOD::TruthParticle* part, std::shared_ptr<std::set<const xAOD::TruthParticle*>> checked = nullptr) const;
59
60 const xAOD::TruthParticle* findInitial(const xAOD::TruthParticle* part, std::shared_ptr<std::set<const xAOD::TruthParticle*>> checked = nullptr) const;
61
62 bool isFromTop(const xAOD::TruthParticle* part) const;
63 static bool isDirectlyFromTop(const xAOD::TruthParticle* part) ;
64 bool isDirectlyFromWTop(const xAOD::TruthParticle* part) const;
65
66 static bool isDirectlyFromGluonQuark(const xAOD::TruthParticle* part) ;
67 bool isFromGluonQuark(const xAOD::TruthParticle* part) const;
68 bool isDirectlyFSRPythia6(const xAOD::TruthParticle* part) const;
69
70 bool isDirectlyFromQuarkTop(const xAOD::TruthParticle* part) const;
71 bool isFromQuarkTop(const xAOD::TruthParticle* part) const;
72 bool isDirectlyFSR(const xAOD::TruthParticle* part) const;
73 bool isFromWTop(const xAOD::TruthParticle* part) const;
74
75 static bool isDirectlyMPIPythia6(const xAOD::TruthParticle* part) ;
76
77 bool isDirectlyMPIPythia8(const xAOD::TruthParticle* part) const;
79 bool isFromQuarkTopPythia8(const xAOD::TruthParticle* part) const;
80 bool isDirectlyFSRPythia8(const xAOD::TruthParticle* part) const;
81
82 static bool isDirectlyMPISherpa(const xAOD::TruthParticle* part) ;
83
84
85 inline bool IsHerwigPP() const {return m_GenUsed==GEN_id::HerwigPP;};
86 inline bool IsPythia8() const {return m_GenUsed==GEN_id::Pythia8;};
87 inline bool IsPythia6() const {return m_GenUsed==GEN_id::Pythia6;};
88 inline bool IsSherpa() const {return m_GenUsed==GEN_id::Sherpa;};
89
90 SG::ReadHandleKey<xAOD::TruthEventContainer> m_mcName {this, "MCCollectionName", "TruthEvents", "TruthEventContainer key"};
91 // only reached through TruthEvent and parent/child links, declared so the scheduler knows about them
92 SG::ReadHandleKey<xAOD::TruthParticleContainer> m_truthParticlesKey {this, "TruthParticlesKey", "TruthParticles", "TruthParticleContainer key"};
93 SG::ReadHandleKey<xAOD::TruthVertexContainer> m_truthVerticesKey {this, "TruthVerticesKey", "TruthVertices", "TruthVertexContainer key"};
94 Gaudi::Property<double> m_HadronPtMinCut{this, "HadronpTMinCut", 5000.};
95 Gaudi::Property<double> m_HadronEtaMaxCut{this, "HadronetaMaxCut", 2.5};
96 Gaudi::Property<int> m_DSID{this, "DSID", 410000};
98
99 };
100
101} //namespace
102
103
104#endif //DerivationFrameworkMCTruth_HadronOriginClassifier_H
105
Property holding a SG store/key/clid from which a ReadHandle is made.
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
void buildPartonsHadronsMaps(const EventContext &ctx, std::map< const xAOD::TruthParticle *, int > &mainHadronMap, std::map< const xAOD::TruthParticle *, HF_id > &partonsOrigin) const
static bool isDirectlyMPIPythia6(const xAOD::TruthParticle *part)
bool isDirectlyFromQuarkTop(const xAOD::TruthParticle *part) const
static bool isDirectlyFromTop(const xAOD::TruthParticle *part)
HadronOriginClassifier(const std::string &t, const std::string &n, const IInterface *p)
bool isFromGluonQuark(const xAOD::TruthParticle *part) const
bool isCHadronFromB(const xAOD::TruthParticle *part, std::shared_ptr< std::set< const xAOD::TruthParticle * > > checked=nullptr) const
bool isFromQuarkTop(const xAOD::TruthParticle *part) const
const xAOD::TruthParticle * findInitial(const xAOD::TruthParticle *part, std::shared_ptr< std::set< const xAOD::TruthParticle * > > checked=nullptr) const
bool isDirectlyMPIPythia8(const xAOD::TruthParticle *part) const
bool isFromTop(const xAOD::TruthParticle *part) const
bool isDirectlyFSRPythia8(const xAOD::TruthParticle *part) const
static bool isDirectlyFromGluonQuark(const xAOD::TruthParticle *part)
bool isFromQuarkTopPythia8(const xAOD::TruthParticle *part) const
std::map< const xAOD::TruthParticle *, HF_id > GetOriginMap(const EventContext &ctx) const
bool isDirectlyFromWTop(const xAOD::TruthParticle *part) const
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthParticlesKey
bool isDirectlyFSR(const xAOD::TruthParticle *part) const
SG::ReadHandleKey< xAOD::TruthEventContainer > m_mcName
bool isDirectlyFSRPythia6(const xAOD::TruthParticle *part) const
SG::ReadHandleKey< xAOD::TruthVertexContainer > m_truthVerticesKey
bool isFromWTop(const xAOD::TruthParticle *part) const
void fillHadronMap(std::set< const xAOD::TruthParticle * > &usedHadron, std::map< const xAOD::TruthParticle *, int > &mainHadronMap, const xAOD::TruthParticle *mainhad, const xAOD::TruthParticle *ihad, bool decayed=false) const
bool isDirectlyFromQuarkTopPythia8(const xAOD::TruthParticle *part) const
static bool isDirectlyMPISherpa(const xAOD::TruthParticle *part)
Property holding a SG store/key/clid from which a ReadHandle is made.
THE reconstruction tool.
Author: James Monk (jmonk@cern.ch).
TruthParticle_v1 TruthParticle
Typedef to implementation.