ATLAS Offline Software
Loading...
Searching...
No Matches
HadronOriginClassifier.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/*
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;
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(std::map<const xAOD::TruthParticle*,int>& mainHadronMap,
53 std::map<const xAOD::TruthParticle*,HF_id>& partonsOrigin) const;
54
55 bool isCHadronFromB(const xAOD::TruthParticle* part, std::shared_ptr<std::set<const xAOD::TruthParticle*>> checked = nullptr) const;
56
57 const xAOD::TruthParticle* findInitial(const xAOD::TruthParticle* part, std::shared_ptr<std::set<const xAOD::TruthParticle*>> checked = nullptr) const;
58
59 bool isFromTop(const xAOD::TruthParticle* part) const;
60 static bool isDirectlyFromTop(const xAOD::TruthParticle* part) ;
61 bool isDirectlyFromWTop(const xAOD::TruthParticle* part) const;
62
63 static bool isDirectlyFromGluonQuark(const xAOD::TruthParticle* part) ;
64 bool isFromGluonQuark(const xAOD::TruthParticle* part) const;
65 bool isDirectlyFSRPythia6(const xAOD::TruthParticle* part) const;
66
67 bool isDirectlyFromQuarkTop(const xAOD::TruthParticle* part) const;
68 bool isFromQuarkTop(const xAOD::TruthParticle* part) const;
69 bool isDirectlyFSR(const xAOD::TruthParticle* part) const;
70 bool isFromWTop(const xAOD::TruthParticle* part) const;
71
72 static bool isDirectlyMPIPythia6(const xAOD::TruthParticle* part) ;
73
74 bool isDirectlyMPIPythia8(const xAOD::TruthParticle* part) const;
76 bool isFromQuarkTopPythia8(const xAOD::TruthParticle* part) const;
77 bool isDirectlyFSRPythia8(const xAOD::TruthParticle* part) const;
78
79 static bool isDirectlyMPISherpa(const xAOD::TruthParticle* part) ;
80
81
82 inline bool IsHerwigPP() const {return m_GenUsed==GEN_id::HerwigPP;};
83 inline bool IsPythia8() const {return m_GenUsed==GEN_id::Pythia8;};
84 inline bool IsPythia6() const {return m_GenUsed==GEN_id::Pythia6;};
85 inline bool IsSherpa() const {return m_GenUsed==GEN_id::Sherpa;};
86
87 SG::ReadHandleKey<xAOD::TruthEventContainer> m_mcName {this, "MCCollectionName", "TruthEvents", "TruthEventContainer key"};
88 Gaudi::Property<double> m_HadronPtMinCut{this, "HadronpTMinCut", 5000.};
89 Gaudi::Property<double> m_HadronEtaMaxCut{this, "HadronetaMaxCut", 2.5};
90 Gaudi::Property<int> m_DSID{this, "DSID", 410000};
92
93 };
94
95} //namespace
96
97
98#endif //DerivationFrameworkMCTruth_HadronOriginClassifier_H
99
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:
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
std::map< const xAOD::TruthParticle *, HF_id > GetOriginMap() 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
bool isDirectlyFromWTop(const xAOD::TruthParticle *part) const
void buildPartonsHadronsMaps(std::map< const xAOD::TruthParticle *, int > &mainHadronMap, std::map< const xAOD::TruthParticle *, HF_id > &partonsOrigin) 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.