ATLAS Offline Software
egammaTruthClassificationFillerTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // $Id$
15 #include "xAODEgamma/Egamma.h"
16 #include "xAODEgamma/Electron.h"
17 #include "xAODEgamma/Photon.h"
19 #include <cstdlib>
20 
21 
22 namespace D3PD {
23 
24 
32  (const std::string& type,
33  const std::string& name,
34  const IInterface* parent)
36  m_classifier ("MCTruthClassifier")
37 {
38  declareProperty ("Classifier", m_classifier, "Classifier tool instance.");
39 
40  declareProperty ("DoBkgElecOrigin", m_doBkgElecOrigin = false,
41  "If true, fill in variables for the origin and type "
42  " of a photon for background electrons from conversions.");
43 
44  book().ignore(); // Avoid coverity warnings.
45 }
46 
47 
52 {
54  CHECK( m_classifier.retrieve() );
55  return StatusCode::SUCCESS;
56 }
57 
58 
63 {
64  CHECK( addVariable ("type", m_type,
65  "MC particle type, from classifier tool.") );
66  CHECK( addVariable ("origin", m_origin,
67  "MC particle origin, from classifier tool.") );
68 
69  if (m_doBkgElecOrigin) {
70  CHECK( addVariable ("typebkg", m_typebkg,
71  "Type of photon for background electron "
72  "from conversions, from classifier tool") );
73  CHECK( addVariable ("originbkg", m_originbkg,
74  "Origin of photon for background electron "
75  "from conversions, from classifier tool.") );
76  }
77 
78  return StatusCode::SUCCESS;
79 }
80 
81 
91 {
94 
96  if (const xAOD::Electron* q =
97  dynamic_cast<const xAOD::Electron*>(&p))
98  {
99  res = m_classifier->particleTruthClassifier (q, &info);
100  }
101  else if (const xAOD::Photon* q =
102  dynamic_cast<const xAOD::Photon*>(&p))
103  {
104  res = m_classifier->particleTruthClassifier (q, &info);
105  }
106  else
107  std::abort();
108 
109  *m_type = res.first;
110  *m_origin = res.second;
111 
112  if (m_doBkgElecOrigin) {
113  if (res.first == MCTruthPartClassifier::BkgElectron &&
115  info.genPart)
116  {
117  res = m_classifier->checkOrigOfBkgElec(info.genPart, &info);
118  *m_typebkg = res.first;
119  *m_originbkg = res.second;
120  }
121  }
122 
123  return StatusCode::SUCCESS;
124 }
125 
126 
127 } // namespace D3PD
grepfile.info
info
Definition: grepfile.py:38
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
Egamma
Definition: ClusMomentumPlots.cxx:11
PhotonConv
@ PhotonConv
Definition: TruthClasses.h:59
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
D3PD::AddVariable::addVariable
virtual StatusCode addVariable(const std::string &name, const std::type_info &ti, void *&ptr, const std::string &docstring="", const void *defval=0)
Add a variable to the tuple.
Definition: AddVariable.cxx:85
xAOD::Egamma_v1
Definition: Egamma_v1.h:56
D3PD::egammaTruthClassificationFillerTool::fill
virtual StatusCode fill(const xAOD::Egamma &p) override
Fill one block — type-safe version.
Definition: egammaTruthClassificationFillerTool.cxx:90
egammaTruthClassificationFillerTool.h
Fill in type/origin from MC classifier tool for an egamma.
Egamma.h
D3PD
Block filler tool for noisy FEB information.
Definition: InnerDetector/InDetMonitoring/InDetGlobalMonitoring/macros/EnhancedPrimaryVertexMonitoring/TrigD3PD/ChainGroup.h:21
D3PD::egammaTruthClassificationFillerTool::initialize
virtual StatusCode initialize() override
Standard Gaudi initialize method.
Definition: egammaTruthClassificationFillerTool.cxx:51
Photon.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ParticleOrigin
ParticleOrigin
Definition: TruthClasses.h:51
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:14
test_pyathena.parent
parent
Definition: test_pyathena.py:15
D3PD::BlockFillerTool
Type-safe wrapper for block filler tools.
Definition: BlockFillerTool.h:68
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
D3PD::egammaTruthClassificationFillerTool::m_doBkgElecOrigin
bool m_doBkgElecOrigin
Property: Should we fill origin of background electrons?
Definition: egammaTruthClassificationFillerTool.h:75
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
D3PD::egammaTruthClassificationFillerTool::m_origin
int * m_origin
Variable: Particle origin.
Definition: egammaTruthClassificationFillerTool.h:83
errorcheck.h
Helpers for checking error return status codes and reporting errors.
D3PD::egammaTruthClassificationFillerTool::m_type
int * m_type
Variable: Particle type.
Definition: egammaTruthClassificationFillerTool.h:79
xAOD::Electron_v1
Definition: Electron_v1.h:34
D3PD::egammaTruthClassificationFillerTool::m_classifier
ToolHandle< IMCTruthClassifier > m_classifier
Property: classifier tool.
Definition: egammaTruthClassificationFillerTool.h:71
D3PD::egammaTruthClassificationFillerTool::m_typebkg
int * m_typebkg
Variable: Type of photon for background electron from conversions.
Definition: egammaTruthClassificationFillerTool.h:87
D3PD::egammaTruthClassificationFillerTool::book
virtual StatusCode book() final
Book variables for this block.
Definition: egammaTruthClassificationFillerTool.cxx:62
xAOD::Photon_v1
Definition: Photon_v1.h:37
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
extractSporadic.q
list q
Definition: extractSporadic.py:98
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
Electron.h
D3PD::egammaTruthClassificationFillerTool::m_originbkg
int * m_originbkg
Variable: Origin of photon for background electron from conversions.
Definition: egammaTruthClassificationFillerTool.h:91
ParticleType
ParticleType
Definition: TruthClasses.h:8
MCTruthPartClassifier::Info
Definition: IMCTruthClassifier.h:49
BkgElectron
@ BkgElectron
Definition: TruthClasses.h:13
D3PD::egammaTruthClassificationFillerTool::egammaTruthClassificationFillerTool
egammaTruthClassificationFillerTool(const std::string &type, const std::string &name, const IInterface *parent)
Standard Gaudi tool constructor.
Definition: egammaTruthClassificationFillerTool.cxx:32