Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Private Attributes | List of all members
DerivationFramework::MuonTruthClassifierFallback Class Reference

#include <MuonTruthClassifierFallback.h>

Inheritance diagram for DerivationFramework::MuonTruthClassifierFallback:
Collaboration diagram for DerivationFramework::MuonTruthClassifierFallback:

Public Member Functions

 MuonTruthClassifierFallback (const std::string &t, const std::string &n, const IInterface *p)
 Constructor with parameters. More...
 
 ~MuonTruthClassifierFallback ()=default
 Destructor. More...
 
StatusCode initialize () override
 
virtual StatusCode addBranches () const override
 

Private Attributes

SG::ReadHandleKey< xAOD::IParticleContainerm_containerKey {this, "ContainerKey", "", "Key of the container to be decorated"}
 
SG::ReadHandleKey< xAOD::TruthEventContainerm_truthSGKey {this, "TruthSGKey", "TruthEvents", "Key of the truth event container"}
 
SG::ReadHandleKey< xAOD::TruthPileupEventContainerm_truthPileupSGKey
 
SG::ReadHandleKey< xAOD::TruthParticleContainerm_truthMuonSGKey {this, "TruthMuonContainerKey", "MuonTruthParticles", ""}
 
SG::WriteDecorHandleKey< xAOD::IParticleContainerm_Truth_dR_Key {this, "dRDecoration", ""}
 Key properties are overwirrten during initialize. More...
 
SG::WriteDecorHandleKey< xAOD::IParticleContainerm_Truth_type_Key {this, "typeDecoration", ""}
 
SG::WriteDecorHandleKey< xAOD::IParticleContainerm_Truth_origin_Key {this, "originDecoration", ""}
 
SG::WriteDecorHandleKey< xAOD::IParticleContainerm_Truth_PU_dR_Key {this, "dRDecorationPU", ""}
 
SG::WriteDecorHandleKey< xAOD::IParticleContainerm_Truth_PU_type_Key {this, "typeDecorationPU", ""}
 
SG::WriteDecorHandleKey< xAOD::IParticleContainerm_Truth_PU_origin_Key {this, "originDecorationPU", ""}
 
Gaudi::Property< float > m_minPt {this, "MinPt", 2500}
 
ToolHandle< IMCTruthClassifierm_mcTruthClassifier {this, "MCTruthClassifierTool", "", "Handle of the MC truth classifier"}
 

Detailed Description

Definition at line 22 of file MuonTruthClassifierFallback.h.

Constructor & Destructor Documentation

◆ MuonTruthClassifierFallback()

DerivationFramework::MuonTruthClassifierFallback::MuonTruthClassifierFallback ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Constructor with parameters.

Definition at line 26 of file MuonTruthClassifierFallback.cxx.

27  :
28  base_class(t, n, p) {
29 }

◆ ~MuonTruthClassifierFallback()

DerivationFramework::MuonTruthClassifierFallback::~MuonTruthClassifierFallback ( )
default

Destructor.

Member Function Documentation

◆ addBranches()

StatusCode DerivationFramework::MuonTruthClassifierFallback::addBranches ( ) const
overridevirtual

Definition at line 59 of file MuonTruthClassifierFallback.cxx.

59  {
60  // Retrieve main particle collection
61  const EventContext& ctx = Gaudi::Hive::currentContext();
62 
64  if (!parts.isValid()) {
65  ATH_MSG_ERROR("No Muon collection with name " << m_containerKey.fullKey() << " found in StoreGate!");
66  return StatusCode::FAILURE;
67  }
69  if (!tec.isValid()) {
70  ATH_MSG_ERROR("No truth collection with name " << m_truthSGKey.fullKey() << " found in StoreGate!");
71  return StatusCode::FAILURE;
72  }
74  if (!tpec.isValid()) {
75  ATH_MSG_DEBUG("No truth pileup collection with name " << m_truthPileupSGKey.fullKey() << " found in StoreGate. Pile-up information will not be filled");
76  }
77 
79  if (!truthMuons.isValid()) {
80  ATH_MSG_ERROR("No truth muon collection with name " << m_truthMuonSGKey.fullKey() << " found in StoreGate!");
81  return StatusCode::FAILURE;
82  }
83 
84  // Set up the decorator
85 
86  for (const xAOD::IParticle* part : *parts) {
87  const xAOD::TruthParticle* closest = nullptr;
88  float minDR{FLT_MAX};
89  for (const xAOD::TruthParticle* muTruth : *truthMuons) {
90  const float dR = xAOD::P4Helpers::deltaR2(muTruth, part);
91  if (dR > minDR) continue;
92  closest = muTruth;
93  minDR = dR;
94  }
95 
96  for (const xAOD::TruthEvent* event : *tec) {
97  for (size_t parti = 0; parti < event->nTruthParticles(); parti++) {
98  const xAOD::TruthParticle* tpart = event->truthParticle(parti);
99  if (!tpart || !MC::isStable(tpart) || HepMC::is_simulation_particle(tpart) || !tpart->charge() || tpart->isMuon() ||
100  tpart->pt() < m_minPt)
101  continue;
102  const float dR = xAOD::P4Helpers::deltaR2(tpart, part);
103  if (dR > minDR) continue;
104  closest = tpart;
105  minDR = dR;
106  }
107  }
108 
109  decorator_dR(*part) = closest ? std::sqrt(minDR) : -1;
110 
111  int newType{-1}, newOrigin{-1};
112  if (closest && closest->isMuon()) {
113  newType = acc_tT(*closest);
114  newOrigin = acc_tO(*closest);
115  } else if (closest) {
116  auto res = m_mcTruthClassifier->particleTruthClassifier(closest);
117  newType = res.first;
118  newOrigin = res.second;
119  }
120  decorator_type(*part) = newType;
121  decorator_origin(*part) = newOrigin;
122 
123  decorator_pu_dR(*part) = -1;
124  decorator_pu_type(*part) = -1;
125  decorator_pu_origin(*part) = -1;
126 
127  minDR = FLT_MAX;
128 
129  if (tpec.isValid()) {
130  const xAOD::TruthParticle* closestPileup = nullptr;
131  for (auto event : *tpec) {
132  for (size_t parti = 0; parti < event->nTruthParticles(); parti++) {
133  const xAOD::TruthParticle* tpart = event->truthParticle(parti);
134  if (!tpart || !MC::isStable(tpart) || HepMC::is_simulation_particle(tpart) || !tpart->charge() || tpart->isMuon() ||
135  tpart->pt() < m_minPt)
136  continue;
137  const float dR = xAOD::P4Helpers::deltaR2(tpart, part);
138  if (dR > minDR) continue;
139  closestPileup = tpart;
140  minDR = dR;
141  }
142  }
143  decorator_pu_dR(*part) = (closestPileup ? std::sqrt(minDR) : -1);
144  int newPileupType{-1}, newPileupOrigin{-1};
145  if (closestPileup) {
146  auto res = m_mcTruthClassifier->particleTruthClassifier(closestPileup);
147  newPileupType = res.first;
148  newPileupOrigin = res.second;
149  }
150  decorator_pu_type(*part) = newPileupType;
151  decorator_pu_origin(*part) = newPileupOrigin;
152  }
153  }
154 
155  return StatusCode::SUCCESS;
156 }

◆ initialize()

StatusCode DerivationFramework::MuonTruthClassifierFallback::initialize ( )
override

Key properties are overwirrten during initialize

Definition at line 32 of file MuonTruthClassifierFallback.cxx.

32  {
33  ATH_MSG_VERBOSE("initialize() ...");
34  ATH_CHECK(m_mcTruthClassifier.retrieve());
35 
36  ATH_CHECK(m_containerKey.initialize());
37  ATH_CHECK(m_truthSGKey.initialize());
38  ATH_CHECK(m_truthPileupSGKey.initialize());
40 
42  m_Truth_dR_Key = m_containerKey.key() + ".MCTFallback_dR";
43  m_Truth_type_Key = m_containerKey.key() + ".MCTFallback_truthType";
44  m_Truth_origin_Key = m_containerKey.key() + ".MCTFallback_truthOrigin";
45  ATH_CHECK(m_Truth_dR_Key.initialize());
46  ATH_CHECK(m_Truth_type_Key.initialize());
47  ATH_CHECK(m_Truth_origin_Key.initialize());
48 
49  m_Truth_PU_dR_Key = m_containerKey.key() + ".MCTFallbackPU_dR";
50  m_Truth_PU_type_Key = m_containerKey.key() + ".MCTFallbackPU_truthType";
51  m_Truth_PU_origin_Key = m_containerKey.key() + ".MCTFallbackPU_truthOrigin";
52  ATH_CHECK(m_Truth_PU_dR_Key.initialize());
53  ATH_CHECK(m_Truth_PU_type_Key.initialize());
54  ATH_CHECK(m_Truth_PU_origin_Key.initialize());
55 
56  return StatusCode::SUCCESS;
57 }

Member Data Documentation

◆ m_containerKey

SG::ReadHandleKey<xAOD::IParticleContainer> DerivationFramework::MuonTruthClassifierFallback::m_containerKey {this, "ContainerKey", "", "Key of the container to be decorated"}
private

Definition at line 36 of file MuonTruthClassifierFallback.h.

◆ m_mcTruthClassifier

ToolHandle<IMCTruthClassifier> DerivationFramework::MuonTruthClassifierFallback::m_mcTruthClassifier {this, "MCTruthClassifierTool", "", "Handle of the MC truth classifier"}
private

Definition at line 52 of file MuonTruthClassifierFallback.h.

◆ m_minPt

Gaudi::Property<float> DerivationFramework::MuonTruthClassifierFallback::m_minPt {this, "MinPt", 2500}
private

Definition at line 50 of file MuonTruthClassifierFallback.h.

◆ m_Truth_dR_Key

SG::WriteDecorHandleKey<xAOD::IParticleContainer> DerivationFramework::MuonTruthClassifierFallback::m_Truth_dR_Key {this, "dRDecoration", ""}
private

Key properties are overwirrten during initialize.

Definition at line 43 of file MuonTruthClassifierFallback.h.

◆ m_Truth_origin_Key

SG::WriteDecorHandleKey<xAOD::IParticleContainer> DerivationFramework::MuonTruthClassifierFallback::m_Truth_origin_Key {this, "originDecoration", ""}
private

Definition at line 45 of file MuonTruthClassifierFallback.h.

◆ m_Truth_PU_dR_Key

SG::WriteDecorHandleKey<xAOD::IParticleContainer> DerivationFramework::MuonTruthClassifierFallback::m_Truth_PU_dR_Key {this, "dRDecorationPU", ""}
private

Definition at line 46 of file MuonTruthClassifierFallback.h.

◆ m_Truth_PU_origin_Key

SG::WriteDecorHandleKey<xAOD::IParticleContainer> DerivationFramework::MuonTruthClassifierFallback::m_Truth_PU_origin_Key {this, "originDecorationPU", ""}
private

Definition at line 48 of file MuonTruthClassifierFallback.h.

◆ m_Truth_PU_type_Key

SG::WriteDecorHandleKey<xAOD::IParticleContainer> DerivationFramework::MuonTruthClassifierFallback::m_Truth_PU_type_Key {this, "typeDecorationPU", ""}
private

Definition at line 47 of file MuonTruthClassifierFallback.h.

◆ m_Truth_type_Key

SG::WriteDecorHandleKey<xAOD::IParticleContainer> DerivationFramework::MuonTruthClassifierFallback::m_Truth_type_Key {this, "typeDecoration", ""}
private

Definition at line 44 of file MuonTruthClassifierFallback.h.

◆ m_truthMuonSGKey

SG::ReadHandleKey<xAOD::TruthParticleContainer> DerivationFramework::MuonTruthClassifierFallback::m_truthMuonSGKey {this, "TruthMuonContainerKey", "MuonTruthParticles", ""}
private

Definition at line 40 of file MuonTruthClassifierFallback.h.

◆ m_truthPileupSGKey

SG::ReadHandleKey<xAOD::TruthPileupEventContainer> DerivationFramework::MuonTruthClassifierFallback::m_truthPileupSGKey
private
Initial value:
{this, "TruthPileupContainerKey", "TruthPileupEvents",
"Key of the pile-up event container"}

Definition at line 38 of file MuonTruthClassifierFallback.h.

◆ m_truthSGKey

SG::ReadHandleKey<xAOD::TruthEventContainer> DerivationFramework::MuonTruthClassifierFallback::m_truthSGKey {this, "TruthSGKey", "TruthEvents", "Key of the truth event container"}
private

Definition at line 37 of file MuonTruthClassifierFallback.h.


The documentation for this class was generated from the following files:
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
DerivationFramework::MuonTruthClassifierFallback::m_truthMuonSGKey
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthMuonSGKey
Definition: MuonTruthClassifierFallback.h:40
DerivationFramework::MuonTruthClassifierFallback::m_Truth_type_Key
SG::WriteDecorHandleKey< xAOD::IParticleContainer > m_Truth_type_Key
Definition: MuonTruthClassifierFallback.h:44
DerivationFramework::MuonTruthClassifierFallback::m_truthPileupSGKey
SG::ReadHandleKey< xAOD::TruthPileupEventContainer > m_truthPileupSGKey
Definition: MuonTruthClassifierFallback.h:38
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
DerivationFramework::MuonTruthClassifierFallback::m_truthSGKey
SG::ReadHandleKey< xAOD::TruthEventContainer > m_truthSGKey
Definition: MuonTruthClassifierFallback.h:37
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
xAOD::P4Helpers::deltaR2
double deltaR2(double rapidity1, double phi1, double rapidity2, double phi2)
from bare rapidity,phi
Definition: xAODP4Helpers.h:111
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:41
DerivationFramework::MuonTruthClassifierFallback::m_mcTruthClassifier
ToolHandle< IMCTruthClassifier > m_mcTruthClassifier
Definition: MuonTruthClassifierFallback.h:52
DerivationFramework::MuonTruthClassifierFallback::m_minPt
Gaudi::Property< float > m_minPt
Definition: MuonTruthClassifierFallback.h:50
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
event
POOL::TEvent event(POOL::TEvent::kClassAccess)
HepMC::is_simulation_particle
bool is_simulation_particle(const T &p)
Method to establish if a particle (or barcode) was created during the simulation (TODO update to be s...
Definition: MagicNumbers.h:355
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:11
xAOD::TruthEvent_v1
Class describing a signal truth event in the MC record.
Definition: TruthEvent_v1.h:35
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DerivationFramework::MuonTruthClassifierFallback::m_Truth_origin_Key
SG::WriteDecorHandleKey< xAOD::IParticleContainer > m_Truth_origin_Key
Definition: MuonTruthClassifierFallback.h:45
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
DerivationFramework::MuonTruthClassifierFallback::m_Truth_PU_origin_Key
SG::WriteDecorHandleKey< xAOD::IParticleContainer > m_Truth_PU_origin_Key
Definition: MuonTruthClassifierFallback.h:48
DerivationFramework::MuonTruthClassifierFallback::m_containerKey
SG::ReadHandleKey< xAOD::IParticleContainer > m_containerKey
Definition: MuonTruthClassifierFallback.h:36
MC::isStable
bool isStable(const T &p)
Identify if the particle is stable, i.e. has not decayed.
Definition: HepMCHelpers.h:45
xAOD::TruthParticle_v1::isMuon
bool isMuon() const
Whether the particle is a muon (or antimuon)
DerivationFramework::MuonTruthClassifierFallback::m_Truth_PU_type_Key
SG::WriteDecorHandleKey< xAOD::IParticleContainer > m_Truth_PU_type_Key
Definition: MuonTruthClassifierFallback.h:47
xAOD::TruthParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TruthParticle_v1.cxx:166
DerivationFramework::MuonTruthClassifierFallback::m_Truth_dR_Key
SG::WriteDecorHandleKey< xAOD::IParticleContainer > m_Truth_dR_Key
Key properties are overwirrten during initialize.
Definition: MuonTruthClassifierFallback.h:43
doL1CaloHVCorrections.parts
parts
Definition: doL1CaloHVCorrections.py:334
xAOD::TruthParticle_v1::charge
double charge() const
Physical charge.
DerivationFramework::MuonTruthClassifierFallback::m_Truth_PU_dR_Key
SG::WriteDecorHandleKey< xAOD::IParticleContainer > m_Truth_PU_dR_Key
Definition: MuonTruthClassifierFallback.h:46