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
20
21#include <map>
22#include <set>
23#include <string>
24
25namespace DerivationFramework{
26
27
29
30
31 public:
32 HadronOriginClassifier(const std::string& t, const std::string& n, const IInterface* p);
34
35 virtual StatusCode initialize() override;
36
37 typedef enum {extrajet=0,
38 c_MPI =-1, b_MPI =1,
39 c_FSR =-2, b_FSR =2,
43
44 enum class GEN_id { Pythia6=0, Pythia8=1, HerwigPP=2, Sherpa=3 };
45
46 std::map<const xAOD::TruthParticle*, HF_id> GetOriginMap(const EventContext& ctx) const;
47
48 private:
49
50 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;
51
52 void buildPartonsHadronsMaps(const EventContext& ctx,
53 std::map<const xAOD::TruthParticle*,int>& mainHadronMap,
54 std::map<const xAOD::TruthParticle*,HF_id>& partonsOrigin) const;
55
56 bool isCHadronFromB(const xAOD::TruthParticle* part, std::shared_ptr<std::set<const xAOD::TruthParticle*>> checked = nullptr) const;
57
58 const xAOD::TruthParticle* findInitial(const xAOD::TruthParticle* part, std::shared_ptr<std::set<const xAOD::TruthParticle*>> checked = nullptr) const;
59
60 bool isFromTop(const xAOD::TruthParticle* part) const;
61 static bool isDirectlyFromTop(const xAOD::TruthParticle* part) ;
62 bool isDirectlyFromWTop(const xAOD::TruthParticle* part) const;
63
64 static bool isDirectlyFromGluonQuark(const xAOD::TruthParticle* part) ;
65 bool isFromGluonQuark(const xAOD::TruthParticle* part) const;
66 bool isDirectlyFSRPythia6(const xAOD::TruthParticle* part) const;
67
68 bool isDirectlyFromQuarkTop(const xAOD::TruthParticle* part) const;
69 bool isFromQuarkTop(const xAOD::TruthParticle* part) const;
70 bool isDirectlyFSR(const xAOD::TruthParticle* part) const;
71 bool isFromWTop(const xAOD::TruthParticle* part) const;
72
73 static bool isDirectlyMPIPythia6(const xAOD::TruthParticle* part) ;
74
75 bool isDirectlyMPIPythia8(const xAOD::TruthParticle* part) const;
77 bool isFromQuarkTopPythia8(const xAOD::TruthParticle* part) const;
78 bool isDirectlyFSRPythia8(const xAOD::TruthParticle* part) const;
79
80 static bool isDirectlyMPISherpa(const xAOD::TruthParticle* part) ;
81
82
83 inline bool IsHerwigPP() const {return m_GenUsed==GEN_id::HerwigPP;};
84 inline bool IsPythia8() const {return m_GenUsed==GEN_id::Pythia8;};
85 inline bool IsPythia6() const {return m_GenUsed==GEN_id::Pythia6;};
86 inline bool IsSherpa() const {return m_GenUsed==GEN_id::Sherpa;};
87
88 SG::ReadHandleKey<xAOD::TruthEventContainer> m_mcName {this, "MCCollectionName", "TruthEvents", "TruthEventContainer key"};
89 Gaudi::Property<double> m_HadronPtMinCut{this, "HadronpTMinCut", 5000.};
90 Gaudi::Property<double> m_HadronEtaMaxCut{this, "HadronetaMaxCut", 2.5};
91 Gaudi::Property<int> m_DSID{this, "DSID", 410000};
93
94 };
95
96} //namespace
97
98
99#endif //DerivationFrameworkMCTruth_HadronOriginClassifier_H
100
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
bool isDirectlyFSR(const xAOD::TruthParticle *part) const
SG::ReadHandleKey< xAOD::TruthEventContainer > m_mcName
bool isDirectlyFSRPythia6(const xAOD::TruthParticle *part) const
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.