ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
DerivationFramework::PhotonsDirectionTool Class Reference

#include <PhotonsDirectionTool.h>

Inheritance diagram for DerivationFramework::PhotonsDirectionTool:
Collaboration diagram for DerivationFramework::PhotonsDirectionTool:

Public Member Functions

virtual StatusCode initialize () override final
 
virtual StatusCode addBranches (const EventContext &ctx) const override final
 

Private Attributes

SG::ReadHandleKey< xAOD::PhotonContainerm_collName
 
SG::WriteHandleKey< std::vector< float > > m_sgEta
 
SG::WriteHandleKey< std::vector< float > > m_sgPhi
 
SG::WriteHandleKey< std::vector< float > > m_sgEt
 
SG::WriteHandleKey< std::vector< float > > m_sgE
 
bool m_doEta = false
 
bool m_doPhi = false
 
bool m_doEt = false
 
bool m_doE = false
 

Detailed Description

Definition at line 17 of file PhotonsDirectionTool.h.

Member Function Documentation

◆ addBranches()

StatusCode DerivationFramework::PhotonsDirectionTool::addBranches ( const EventContext &  ctx) const
finaloverridevirtual

Definition at line 41 of file PhotonsDirectionTool.cxx.

42 {
43  // Retrieve photon container
45  // define the pointers to vectors which will hold the additional payloads
46  auto recEta = std::make_unique<std::vector<float>>();
47  auto recPhi = std::make_unique<std::vector<float>>();
48  auto recEt = std::make_unique<std::vector<float>>();
49  auto recE = std::make_unique<std::vector<float>>();
50 
51  // Loop over electrons and fill the vectors
52  for (const xAOD::Photon* ph : *photons) {
53  // Prepare variables
54  float eta(0.0), phi(0.0), e(0.0), et(0.0);
55 
56  if (ph->nCaloClusters() > 0) {
57  const xAOD::CaloCluster* gCluster = ph->caloCluster(0);
58  eta = gCluster->etaBE(2);
59  phi = gCluster->phi();
60  e = gCluster->e();
61  et = e / cosh(eta);
62  } else {
64  "Couldn't retrieve photon cluster, will use photon 4-momentum");
65  eta = ph->eta();
66  phi = ph->phi();
67  e = ph->e();
68  et = ph->pt();
69  }
70  recEta->push_back(eta);
71  recPhi->push_back(phi);
72  recEt->push_back(et);
73  recE->push_back(e);
74  } // end of loop over photons
75 
76  // Write payload to StoreGate for downstream client access
77  if (m_doEta) {
79  ATH_CHECK(etas.record(std::move(recEta)));
80  }
81  if (m_doPhi) {
83  ATH_CHECK(phis.record(std::move(recPhi)));
84  }
85  if (m_doEt) {
87  ATH_CHECK(ets.record(std::move(recEt)));
88  }
89  if (m_doE) {
91  ATH_CHECK(es.record(std::move(recE)));
92  }
93  return StatusCode::SUCCESS;
94 }

◆ initialize()

StatusCode DerivationFramework::PhotonsDirectionTool::initialize ( )
finaloverridevirtual

Definition at line 20 of file PhotonsDirectionTool.cxx.

21 {
22  ATH_CHECK(m_collName.initialize());
23 
24  m_doEta = !(m_sgEta.key().empty());
25  m_doPhi = !(m_sgPhi.key().empty());
26  m_doEt = !(m_sgEt.key().empty());
27  m_doE = !(m_sgE.key().empty());
28  if (!m_doEta && !m_doPhi && !m_doE && !m_doEt) {
29  ATH_MSG_ERROR("You are requesting the PhotonsDirectionTool but have "
30  "provided no SG names for any of the results");
31  return StatusCode::FAILURE;
32  }
37  return StatusCode::SUCCESS;
38 }

Member Data Documentation

◆ m_collName

SG::ReadHandleKey<xAOD::PhotonContainer> DerivationFramework::PhotonsDirectionTool::m_collName
private
Initial value:
{ this,
"PhotonContainer",
"Photons",
"Input Photons" }

Definition at line 27 of file PhotonsDirectionTool.h.

◆ m_doE

bool DerivationFramework::PhotonsDirectionTool::m_doE = false
private

Definition at line 55 of file PhotonsDirectionTool.h.

◆ m_doEt

bool DerivationFramework::PhotonsDirectionTool::m_doEt = false
private

Definition at line 54 of file PhotonsDirectionTool.h.

◆ m_doEta

bool DerivationFramework::PhotonsDirectionTool::m_doEta = false
private

Definition at line 52 of file PhotonsDirectionTool.h.

◆ m_doPhi

bool DerivationFramework::PhotonsDirectionTool::m_doPhi = false
private

Definition at line 53 of file PhotonsDirectionTool.h.

◆ m_sgE

SG::WriteHandleKey<std::vector<float> > DerivationFramework::PhotonsDirectionTool::m_sgE
private
Initial value:
{ this,
"ESGEntry",
"",
"output E vector" }

Definition at line 47 of file PhotonsDirectionTool.h.

◆ m_sgEt

SG::WriteHandleKey<std::vector<float> > DerivationFramework::PhotonsDirectionTool::m_sgEt
private
Initial value:
{ this,
"EtSGEntry",
"",
"output E vector" }

Definition at line 42 of file PhotonsDirectionTool.h.

◆ m_sgEta

SG::WriteHandleKey<std::vector<float> > DerivationFramework::PhotonsDirectionTool::m_sgEta
private
Initial value:
{ this,
"EtaSGEntry",
"",
"output Eta vector" }

Definition at line 32 of file PhotonsDirectionTool.h.

◆ m_sgPhi

SG::WriteHandleKey<std::vector<float> > DerivationFramework::PhotonsDirectionTool::m_sgPhi
private
Initial value:
{ this,
"PhiSGEntry",
"",
"output Phi vector" }

Definition at line 37 of file PhotonsDirectionTool.h.


The documentation for this class was generated from the following files:
xAOD::CaloCluster_v1::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
Definition: CaloCluster_v1.cxx:256
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
et
Extra patterns decribing particle interation process.
DerivationFramework::PhotonsDirectionTool::m_doE
bool m_doE
Definition: PhotonsDirectionTool.h:55
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
DerivationFramework::PhotonsDirectionTool::m_sgE
SG::WriteHandleKey< std::vector< float > > m_sgE
Definition: PhotonsDirectionTool.h:47
xAOD::et
et
Definition: TrigEMCluster_v1.cxx:25
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
DerivationFramework::PhotonsDirectionTool::m_doEt
bool m_doEt
Definition: PhotonsDirectionTool.h:54
DerivationFramework::PhotonsDirectionTool::m_sgEta
SG::WriteHandleKey< std::vector< float > > m_sgEta
Definition: PhotonsDirectionTool.h:32
DerivationFramework::PhotonsDirectionTool::m_sgEt
SG::WriteHandleKey< std::vector< float > > m_sgEt
Definition: PhotonsDirectionTool.h:42
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
DerivationFramework::PhotonsDirectionTool::m_collName
SG::ReadHandleKey< xAOD::PhotonContainer > m_collName
Definition: PhotonsDirectionTool.h:27
DerivationFramework::PhotonsDirectionTool::m_doPhi
bool m_doPhi
Definition: PhotonsDirectionTool.h:53
xAOD::CaloCluster_v1::etaBE
float etaBE(const unsigned layer) const
Get the eta in one layer of the EM Calo.
Definition: CaloCluster_v1.cxx:628
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:62
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
DerivationFramework::PhotonsDirectionTool::m_sgPhi
SG::WriteHandleKey< std::vector< float > > m_sgPhi
Definition: PhotonsDirectionTool.h:37
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
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::PhotonsDirectionTool::m_doEta
bool m_doEta
Definition: PhotonsDirectionTool.h:52
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
xAOD::Photon_v1
Definition: Photon_v1.h:37
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAOD::CaloCluster_v1::e
virtual double e() const
The total energy of the particle.
Definition: CaloCluster_v1.cxx:265
EgEfficiencyCorr_testFixedInput.etas
list etas
Definition: EgEfficiencyCorr_testFixedInput.py:9