ATLAS Offline Software
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 
19 
20 #include <map>
21 #include <set>
22 #include <string>
23 
24 namespace DerivationFramework{
25 
26 
28 
29 
30  public:
31  HadronOriginClassifier(const std::string& t, const std::string& n, const IInterface* p);
32  virtual ~HadronOriginClassifier();
33 
34  virtual StatusCode initialize() override;
35 
36  typedef enum {extrajet=0,
37  c_MPI =-1, b_MPI =1,
38  c_FSR =-2, b_FSR =2,
39  c_from_W =-3, b_from_W =3,
42 
43  enum class GEN_id { Pythia6=0, Pythia8=1, HerwigPP=2, Sherpa=3 };
44 
45  std::map<const xAOD::TruthParticle*, HF_id> GetOriginMap() const;
46 
47  private:
48 
49  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;
50 
51  void buildPartonsHadronsMaps(std::map<const xAOD::TruthParticle*,int>& mainHadronMap,
52  std::map<const xAOD::TruthParticle*,HF_id>& partonsOrigin) const;
53 
54  bool isCHadronFromB(const xAOD::TruthParticle* part, std::shared_ptr<std::set<const xAOD::TruthParticle*>> checked = nullptr) const;
55 
56  const xAOD::TruthParticle* findInitial(const xAOD::TruthParticle* part, std::shared_ptr<std::set<const xAOD::TruthParticle*>> checked = nullptr) const;
57 
58  bool isFromTop(const xAOD::TruthParticle* part) const;
59  static bool isDirectlyFromTop(const xAOD::TruthParticle* part) ;
60  bool isDirectlyFromWTop(const xAOD::TruthParticle* part) const;
61 
63  bool isFromGluonQuark(const xAOD::TruthParticle* part) const;
65 
67  bool isFromQuarkTop(const xAOD::TruthParticle* part) const;
68  bool isDirectlyFSR(const xAOD::TruthParticle* part) const;
69  bool isFromWTop(const xAOD::TruthParticle* part) const;
70 
71  static bool isDirectlyMPIPythia6(const xAOD::TruthParticle* part) ;
72 
77 
78  static bool isDirectlyMPISherpa(const xAOD::TruthParticle* part) ;
79 
80 
81  inline bool IsHerwigPP() const {return m_GenUsed==GEN_id::HerwigPP;};
82  inline bool IsPythia8() const {return m_GenUsed==GEN_id::Pythia8;};
83  inline bool IsPythia6() const {return m_GenUsed==GEN_id::Pythia6;};
84  inline bool IsSherpa() const {return m_GenUsed==GEN_id::Sherpa;};
85 
86  Gaudi::Property<std::string> m_mcName{this, "MCCollectionName", "TruthEvents"};
87  Gaudi::Property<double> m_HadronPtMinCut{this, "HadronpTMinCut", 5000.};
88  Gaudi::Property<double> m_HadronEtaMaxCut{this, "HadronetaMaxCut", 2.5};
89  Gaudi::Property<int> m_DSID{this, "DSID", 410000};
91 
92  };
93 
94 } //namespace
95 
96 
97 #endif //DerivationFrameworkMCTruth_HadronOriginClassifier_H
98 
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
DerivationFramework::HadronOriginClassifier::isDirectlyMPIPythia8
bool isDirectlyMPIPythia8(const xAOD::TruthParticle *part) const
Definition: HadronOriginClassifier.cxx:619
DerivationFramework::HadronOriginClassifier::m_DSID
Gaudi::Property< int > m_DSID
Definition: HadronOriginClassifier.h:89
DerivationFramework::HadronOriginClassifier::isDirectlyMPISherpa
static bool isDirectlyMPISherpa(const xAOD::TruthParticle *part)
Definition: HadronOriginClassifier.cxx:624
DerivationFramework::HadronOriginClassifier::GEN_id::HerwigPP
@ HerwigPP
DerivationFramework::HadronOriginClassifier::b_FSR
@ b_FSR
Definition: HadronOriginClassifier.h:38
DerivationFramework::HadronOriginClassifier
Definition: HadronOriginClassifier.h:27
DerivationFramework::HadronOriginClassifier::isFromQuarkTop
bool isFromQuarkTop(const xAOD::TruthParticle *part) const
Definition: HadronOriginClassifier.cxx:550
DerivationFramework::HadronOriginClassifier::c_from_H
@ c_from_H
Definition: HadronOriginClassifier.h:41
DerivationFramework::HadronOriginClassifier::GEN_id::Sherpa
@ Sherpa
DerivationFramework::HadronOriginClassifier::c_FSR
@ c_FSR
Definition: HadronOriginClassifier.h:38
DerivationFramework::HadronOriginClassifier::IsHerwigPP
bool IsHerwigPP() const
Definition: HadronOriginClassifier.h:81
DerivationFramework::HadronOriginClassifier::isFromQuarkTopPythia8
bool isFromQuarkTopPythia8(const xAOD::TruthParticle *part) const
Definition: HadronOriginClassifier.cxx:602
DerivationFramework::HadronOriginClassifier::GetOriginMap
std::map< const xAOD::TruthParticle *, HF_id > GetOriginMap() const
Definition: HadronOriginClassifier.cxx:189
DerivationFramework::HadronOriginClassifier::c_MPI
@ c_MPI
Definition: HadronOriginClassifier.h:37
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
DerivationFramework::HadronOriginClassifier::HF_id
HF_id
Definition: HadronOriginClassifier.h:36
DerivationFramework::HadronOriginClassifier::c_from_W
@ c_from_W
Definition: HadronOriginClassifier.h:39
DerivationFramework::HadronOriginClassifier::isFromTop
bool isFromTop(const xAOD::TruthParticle *part) const
Definition: HadronOriginClassifier.cxx:435
DerivationFramework::HadronOriginClassifier::c_from_top
@ c_from_top
Definition: HadronOriginClassifier.h:40
DerivationFramework::HadronOriginClassifier::isDirectlyFSR
bool isDirectlyFSR(const xAOD::TruthParticle *part) const
Definition: HadronOriginClassifier.cxx:520
Pythia8
Author: James Monk (jmonk@cern.ch)
Definition: IPythia8Custom.h:10
DerivationFramework::HadronOriginClassifier::b_from_W
@ b_from_W
Definition: HadronOriginClassifier.h:39
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:388
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:637
DerivationFramework::HadronOriginClassifier::~HadronOriginClassifier
virtual ~HadronOriginClassifier()
Definition: HadronOriginClassifier.cxx:34
DerivationFramework::HadronOriginClassifier::IsSherpa
bool IsSherpa() const
Definition: HadronOriginClassifier.h:84
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
DerivationFramework::HadronOriginClassifier::b_MPI
@ b_MPI
Definition: HadronOriginClassifier.h:37
DerivationFramework::HadronOriginClassifier::isFromGluonQuark
bool isFromGluonQuark(const xAOD::TruthParticle *part) const
Definition: HadronOriginClassifier.cxx:496
DerivationFramework::HadronOriginClassifier::isDirectlyFromQuarkTop
bool isDirectlyFromQuarkTop(const xAOD::TruthParticle *part) const
Definition: HadronOriginClassifier.cxx:532
beamspotman.n
n
Definition: beamspotman.py:729
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
DerivationFramework::HadronOriginClassifier::isFromWTop
bool isFromWTop(const xAOD::TruthParticle *part) const
Definition: HadronOriginClassifier.cxx:461
DerivationFramework::HadronOriginClassifier::GEN_id
GEN_id
Definition: HadronOriginClassifier.h:43
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
DerivationFramework::HadronOriginClassifier::isDirectlyFromWTop
bool isDirectlyFromWTop(const xAOD::TruthParticle *part) const
Definition: HadronOriginClassifier.cxx:468
AthAlgTool.h
DerivationFramework::HadronOriginClassifier::isDirectlyFromGluonQuark
static bool isDirectlyFromGluonQuark(const xAOD::TruthParticle *part)
Definition: HadronOriginClassifier.cxx:486
DerivationFramework::HadronOriginClassifier::m_GenUsed
GEN_id m_GenUsed
Definition: HadronOriginClassifier.h:90
DerivationFramework::HadronOriginClassifier::GEN_id::Pythia8
@ Pythia8
DerivationFramework::HadronOriginClassifier::isDirectlyFSRPythia6
bool isDirectlyFSRPythia6(const xAOD::TruthParticle *part) const
Definition: HadronOriginClassifier.cxx:501
DerivationFramework
THE reconstruction tool.
Definition: ParticleSortingAlg.h:24
DerivationFramework::HadronOriginClassifier::HadronOriginClassifier
HadronOriginClassifier(const std::string &t, const std::string &n, const IInterface *p)
Definition: HadronOriginClassifier.cxx:29
DerivationFramework::HadronOriginClassifier::IsPythia6
bool IsPythia6() const
Definition: HadronOriginClassifier.h:83
DerivationFramework::HadronOriginClassifier::m_HadronEtaMaxCut
Gaudi::Property< double > m_HadronEtaMaxCut
MeV.
Definition: HadronOriginClassifier.h:88
DerivationFramework::HadronOriginClassifier::b_from_H
@ b_from_H
Definition: HadronOriginClassifier.h:41
DerivationFramework::HadronOriginClassifier::m_HadronPtMinCut
Gaudi::Property< double > m_HadronPtMinCut
Definition: HadronOriginClassifier.h:87
DerivationFramework::HadronOriginClassifier::m_mcName
Gaudi::Property< std::string > m_mcName
Definition: HadronOriginClassifier.h:86
EventInfo.h
DerivationFramework::HadronOriginClassifier::isDirectlyFSRPythia8
bool isDirectlyFSRPythia8(const xAOD::TruthParticle *part) const
Definition: HadronOriginClassifier.cxx:557
DerivationFramework::HadronOriginClassifier::isDirectlyMPIPythia6
static bool isDirectlyMPIPythia6(const xAOD::TruthParticle *part)
Definition: HadronOriginClassifier.cxx:609
DerivationFramework::HadronOriginClassifier::IsPythia8
bool IsPythia8() const
Definition: HadronOriginClassifier.h:82
DerivationFramework::HadronOriginClassifier::isDirectlyFromTop
static bool isDirectlyFromTop(const xAOD::TruthParticle *part)
Definition: HadronOriginClassifier.cxx:443
DerivationFramework::HadronOriginClassifier::isDirectlyFromQuarkTopPythia8
bool isDirectlyFromQuarkTopPythia8(const xAOD::TruthParticle *part) const
Definition: HadronOriginClassifier.cxx:577
DerivationFramework::HadronOriginClassifier::extrajet
@ extrajet
Definition: HadronOriginClassifier.h:36
AthAlgTool
Definition: AthAlgTool.h:26
TruthEventContainer.h
DerivationFramework::HadronOriginClassifier::buildPartonsHadronsMaps
void buildPartonsHadronsMaps(std::map< const xAOD::TruthParticle *, int > &mainHadronMap, std::map< const xAOD::TruthParticle *, HF_id > &partonsOrigin) const
Definition: HadronOriginClassifier.cxx:257
DerivationFramework::HadronOriginClassifier::b_from_top
@ b_from_top
Definition: HadronOriginClassifier.h:40
DerivationFramework::HadronOriginClassifier::isCHadronFromB
bool isCHadronFromB(const xAOD::TruthParticle *part, std::shared_ptr< std::set< const xAOD::TruthParticle * >> checked=nullptr) const
Definition: HadronOriginClassifier.cxx:366
DerivationFramework::HadronOriginClassifier::GEN_id::Pythia6
@ Pythia6
DerivationFramework::HadronOriginClassifier::initialize
virtual StatusCode initialize() override
Definition: HadronOriginClassifier.cxx:36