Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
JetGhostMergingAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 //
8 // includes
9 //
13 
14 namespace CP
15 {
17  JetGhostMergingAlg (const std::string& name,
18  ISvcLocator* pSvcLocator)
19  : AnaReentrantAlgorithm (name, pSvcLocator)
20  {
21  }
22 
24  initialize ()
25  {
26  // containers
28 
29  // decorators
31 
32  // accessors
34  for (const auto& ghostName: m_inputGhostTrackNames) {
35  std::string full = m_jetLocation.key() + "." + ghostName;
36  m_ghostTrackKeys.emplace_back( this, ghostName, full, "");
37  ATH_CHECK( m_ghostTrackKeys.back().initialize() );
38  }
39 
40  return StatusCode::SUCCESS;
41  }
42 
44  execute (const EventContext &ctx) const
45  {
47  if (!inputJets.isValid()) {
48  ATH_MSG_FATAL("No jet collection with name " << m_jetLocation.key() << " found in StoreGate!");
49  return StatusCode::FAILURE;
50  }
51 
52  // define GhostTrackContainer type (GTC)
53  using GTC = std::vector<ElementLink<DataVector<xAOD::IParticle> > >;
54 
55  // create the accessors for each ghost track collection
56  std::vector<SG::ReadDecorHandle<xAOD::JetContainer, GTC> > ghostTrackAccs;
57  ghostTrackAccs.reserve(m_ghostTrackKeys.size());
58  for (const auto &key: m_ghostTrackKeys) {
59  ghostTrackAccs.emplace_back(key, ctx);
60  }
61 
63 
64  for(const xAOD::Jet *jet: *inputJets) {
65  std::vector<ElementLink<xAOD::IParticleContainer>> mergedGhosts;
66  for (const auto& ghostTrackAcc: ghostTrackAccs) {
67  const GTC &ghosts = ghostTrackAcc( *jet );
68  mergedGhosts.insert(mergedGhosts.end(), ghosts.begin(), ghosts.end());
69  }
70  mergedGhostDecor(*jet) = std::move(mergedGhosts);
71  }
72  return StatusCode::SUCCESS;
73  }
74 
75 }
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
CP::JetGhostMergingAlg::execute
StatusCode execute(const EventContext &ctx) const override
Definition: JetGhostMergingAlg.cxx:44
CP::JetGhostMergingAlg::m_jetLocation
SG::ReadHandleKey< xAOD::JetContainer > m_jetLocation
the jet collection we run on
Definition: JetGhostMergingAlg.h:51
CP::JetGhostMergingAlg::m_mergedGhostContainer
SG::WriteDecorHandleKey< xAOD::JetContainer > m_mergedGhostContainer
the name of the output ghost collection
Definition: JetGhostMergingAlg.h:55
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
CP
Select isolated Photons, Electrons and Muons.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:49
CP::JetGhostMergingAlg::JetGhostMergingAlg
JetGhostMergingAlg(const std::string &name, ISvcLocator *pSvcLocator)
the standard constructor
Definition: JetGhostMergingAlg.cxx:17
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
JetGhostMergingAlg.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:100
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
WriteDecorHandle.h
Handle class for adding a decoration to an object.
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
CP::JetGhostMergingAlg::m_ghostTrackKeys
std::vector< SG::ReadDecorHandleKey< xAOD::JetContainer > > m_ghostTrackKeys
internal vector to hold the ReadDecorHandles for the difference ghosts
Definition: JetGhostMergingAlg.h:61
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
CP::JetGhostMergingAlg::initialize
StatusCode initialize() override
Definition: JetGhostMergingAlg.cxx:24
find_data.full
full
Definition: find_data.py:27
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
SG::WriteDecorHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
CP::JetGhostMergingAlg::m_inputGhostTrackNames
Gaudi::Property< std::vector< std::string > > m_inputGhostTrackNames
Definition: JetGhostMergingAlg.h:64
ReadDecorHandle.h
Handle class for reading a decoration on an object.
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37