ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
DerivationFramework
DerivationFrameworkMCTruth
DerivationFrameworkMCTruth
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
16
#include "
AthenaBaseComps/AthAlgTool.h
"
17
#include "
StoreGate/ReadHandleKey.h
"
18
#include "
xAODTruth/TruthEventContainer.h
"
19
#include "
xAODTruth/TruthParticleContainer.h
"
20
#include "
xAODTruth/TruthVertexContainer.h
"
21
#include "
xAODEventInfo/EventInfo.h
"
22
23
#include <map>
24
#include <set>
25
#include <string>
26
27
namespace
DerivationFramework
{
28
29
30
class
HadronOriginClassifier
:
public
AthAlgTool
{
31
32
33
public
:
34
HadronOriginClassifier
(
const
std::string& t,
const
std::string& n,
const
IInterface* p);
35
virtual
~HadronOriginClassifier
();
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,
42
c_from_W
=-3,
b_from_W
=3,
43
c_from_top
=-4,
b_from_top
=4,
44
c_from_H
=-5,
b_from_H
=5}
HF_id
;
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
;
78
bool
isDirectlyFromQuarkTopPythia8
(
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};
97
GEN_id
m_GenUsed
{};
98
99
};
100
101
}
//namespace
102
103
104
#endif
//DerivationFrameworkMCTruth_HadronOriginClassifier_H
105
AthAlgTool.h
TruthParticleContainer.h
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
TruthEventContainer.h
TruthVertexContainer.h
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
DerivationFramework::HadronOriginClassifier::buildPartonsHadronsMaps
void buildPartonsHadronsMaps(const EventContext &ctx, std::map< const xAOD::TruthParticle *, int > &mainHadronMap, std::map< const xAOD::TruthParticle *, HF_id > &partonsOrigin) const
Definition
HadronOriginClassifier.cxx:435
DerivationFramework::HadronOriginClassifier::isDirectlyMPIPythia6
static bool isDirectlyMPIPythia6(const xAOD::TruthParticle *part)
Definition
HadronOriginClassifier.cxx:788
DerivationFramework::HadronOriginClassifier::m_DSID
Gaudi::Property< int > m_DSID
Definition
HadronOriginClassifier.h:96
DerivationFramework::HadronOriginClassifier::isDirectlyFromQuarkTop
bool isDirectlyFromQuarkTop(const xAOD::TruthParticle *part) const
Definition
HadronOriginClassifier.cxx:711
DerivationFramework::HadronOriginClassifier::isDirectlyFromTop
static bool isDirectlyFromTop(const xAOD::TruthParticle *part)
Definition
HadronOriginClassifier.cxx:622
DerivationFramework::HadronOriginClassifier::initialize
virtual StatusCode initialize() override
Definition
HadronOriginClassifier.cxx:36
DerivationFramework::HadronOriginClassifier::HadronOriginClassifier
HadronOriginClassifier(const std::string &t, const std::string &n, const IInterface *p)
Definition
HadronOriginClassifier.cxx:29
DerivationFramework::HadronOriginClassifier::isFromGluonQuark
bool isFromGluonQuark(const xAOD::TruthParticle *part) const
Definition
HadronOriginClassifier.cxx:675
DerivationFramework::HadronOriginClassifier::isCHadronFromB
bool isCHadronFromB(const xAOD::TruthParticle *part, std::shared_ptr< std::set< const xAOD::TruthParticle * > > checked=nullptr) const
Definition
HadronOriginClassifier.cxx:545
DerivationFramework::HadronOriginClassifier::isFromQuarkTop
bool isFromQuarkTop(const xAOD::TruthParticle *part) const
Definition
HadronOriginClassifier.cxx:729
DerivationFramework::HadronOriginClassifier::findInitial
const xAOD::TruthParticle * findInitial(const xAOD::TruthParticle *part, std::shared_ptr< std::set< const xAOD::TruthParticle * > > checked=nullptr) const
Definition
HadronOriginClassifier.cxx:816
DerivationFramework::HadronOriginClassifier::isDirectlyMPIPythia8
bool isDirectlyMPIPythia8(const xAOD::TruthParticle *part) const
Definition
HadronOriginClassifier.cxx:798
DerivationFramework::HadronOriginClassifier::~HadronOriginClassifier
virtual ~HadronOriginClassifier()
Definition
HadronOriginClassifier.cxx:34
DerivationFramework::HadronOriginClassifier::m_HadronEtaMaxCut
Gaudi::Property< double > m_HadronEtaMaxCut
MeV.
Definition
HadronOriginClassifier.h:95
DerivationFramework::HadronOriginClassifier::IsHerwigPP
bool IsHerwigPP() const
Definition
HadronOriginClassifier.h:85
DerivationFramework::HadronOriginClassifier::GEN_id
GEN_id
Definition
HadronOriginClassifier.h:46
DerivationFramework::HadronOriginClassifier::GEN_id::HerwigPP
@ HerwigPP
Definition
HadronOriginClassifier.h:46
DerivationFramework::HadronOriginClassifier::GEN_id::Sherpa
@ Sherpa
Definition
HadronOriginClassifier.h:46
DerivationFramework::HadronOriginClassifier::GEN_id::Pythia8
@ Pythia8
Definition
HadronOriginClassifier.h:46
DerivationFramework::HadronOriginClassifier::GEN_id::Pythia6
@ Pythia6
Definition
HadronOriginClassifier.h:46
DerivationFramework::HadronOriginClassifier::IsPythia6
bool IsPythia6() const
Definition
HadronOriginClassifier.h:87
DerivationFramework::HadronOriginClassifier::isFromTop
bool isFromTop(const xAOD::TruthParticle *part) const
Definition
HadronOriginClassifier.cxx:614
DerivationFramework::HadronOriginClassifier::isDirectlyFSRPythia8
bool isDirectlyFSRPythia8(const xAOD::TruthParticle *part) const
Definition
HadronOriginClassifier.cxx:736
DerivationFramework::HadronOriginClassifier::isDirectlyFromGluonQuark
static bool isDirectlyFromGluonQuark(const xAOD::TruthParticle *part)
Definition
HadronOriginClassifier.cxx:665
DerivationFramework::HadronOriginClassifier::isFromQuarkTopPythia8
bool isFromQuarkTopPythia8(const xAOD::TruthParticle *part) const
Definition
HadronOriginClassifier.cxx:781
DerivationFramework::HadronOriginClassifier::GetOriginMap
std::map< const xAOD::TruthParticle *, HF_id > GetOriginMap(const EventContext &ctx) const
Definition
HadronOriginClassifier.cxx:367
DerivationFramework::HadronOriginClassifier::HF_id
HF_id
Definition
HadronOriginClassifier.h:39
DerivationFramework::HadronOriginClassifier::b_FSR
@ b_FSR
Definition
HadronOriginClassifier.h:41
DerivationFramework::HadronOriginClassifier::b_MPI
@ b_MPI
Definition
HadronOriginClassifier.h:40
DerivationFramework::HadronOriginClassifier::b_from_H
@ b_from_H
Definition
HadronOriginClassifier.h:44
DerivationFramework::HadronOriginClassifier::b_from_top
@ b_from_top
Definition
HadronOriginClassifier.h:43
DerivationFramework::HadronOriginClassifier::c_from_W
@ c_from_W
Definition
HadronOriginClassifier.h:42
DerivationFramework::HadronOriginClassifier::b_from_W
@ b_from_W
Definition
HadronOriginClassifier.h:42
DerivationFramework::HadronOriginClassifier::c_from_top
@ c_from_top
Definition
HadronOriginClassifier.h:43
DerivationFramework::HadronOriginClassifier::c_from_H
@ c_from_H
Definition
HadronOriginClassifier.h:44
DerivationFramework::HadronOriginClassifier::extrajet
@ extrajet
Definition
HadronOriginClassifier.h:39
DerivationFramework::HadronOriginClassifier::c_FSR
@ c_FSR
Definition
HadronOriginClassifier.h:41
DerivationFramework::HadronOriginClassifier::c_MPI
@ c_MPI
Definition
HadronOriginClassifier.h:40
DerivationFramework::HadronOriginClassifier::m_HadronPtMinCut
Gaudi::Property< double > m_HadronPtMinCut
Definition
HadronOriginClassifier.h:94
DerivationFramework::HadronOriginClassifier::isDirectlyFromWTop
bool isDirectlyFromWTop(const xAOD::TruthParticle *part) const
Definition
HadronOriginClassifier.cxx:647
DerivationFramework::HadronOriginClassifier::m_truthParticlesKey
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthParticlesKey
Definition
HadronOriginClassifier.h:92
DerivationFramework::HadronOriginClassifier::IsPythia8
bool IsPythia8() const
Definition
HadronOriginClassifier.h:86
DerivationFramework::HadronOriginClassifier::isDirectlyFSR
bool isDirectlyFSR(const xAOD::TruthParticle *part) const
Definition
HadronOriginClassifier.cxx:699
DerivationFramework::HadronOriginClassifier::IsSherpa
bool IsSherpa() const
Definition
HadronOriginClassifier.h:88
DerivationFramework::HadronOriginClassifier::m_GenUsed
GEN_id m_GenUsed
Definition
HadronOriginClassifier.h:97
DerivationFramework::HadronOriginClassifier::m_mcName
SG::ReadHandleKey< xAOD::TruthEventContainer > m_mcName
Definition
HadronOriginClassifier.h:90
DerivationFramework::HadronOriginClassifier::isDirectlyFSRPythia6
bool isDirectlyFSRPythia6(const xAOD::TruthParticle *part) const
Definition
HadronOriginClassifier.cxx:680
DerivationFramework::HadronOriginClassifier::m_truthVerticesKey
SG::ReadHandleKey< xAOD::TruthVertexContainer > m_truthVerticesKey
Definition
HadronOriginClassifier.h:93
DerivationFramework::HadronOriginClassifier::isFromWTop
bool isFromWTop(const xAOD::TruthParticle *part) const
Definition
HadronOriginClassifier.cxx:640
DerivationFramework::HadronOriginClassifier::fillHadronMap
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
Definition
HadronOriginClassifier.cxx:567
DerivationFramework::HadronOriginClassifier::isDirectlyFromQuarkTopPythia8
bool isDirectlyFromQuarkTopPythia8(const xAOD::TruthParticle *part) const
Definition
HadronOriginClassifier.cxx:756
DerivationFramework::HadronOriginClassifier::isDirectlyMPISherpa
static bool isDirectlyMPISherpa(const xAOD::TruthParticle *part)
Definition
HadronOriginClassifier.cxx:803
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition
StoreGate/StoreGate/ReadHandleKey.h:40
DerivationFramework
THE reconstruction tool.
Definition
CascadeTools.h:16
Pythia8
Author: James Monk (jmonk@cern.ch).
Definition
IPythia8Custom.h:10
xAOD::TruthParticle
TruthParticle_v1 TruthParticle
Typedef to implementation.
Definition
Event/xAOD/xAODTruth/xAODTruth/TruthParticle.h:15
EventInfo.h
Generated on
for ATLAS Offline Software by
1.17.0