Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
SdoMultiTruthMaker.cxx
Go to the documentation of this file.
1 
2 /*
3  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
4 */
5 #include "SdoMultiTruthMaker.h"
6 
7 #include "StoreGate/ReadHandle.h"
9 
12 namespace MuonR4 {
14 
15  ATH_CHECK(m_simHitKey.initialize());
17  return StatusCode::SUCCESS;
18  }
19 
20  StatusCode SdoMultiTruthMaker::execute(const EventContext& ctx) const {
21 
22  SG::WriteHandle prdTruth{m_writeKey, ctx};
23  ATH_CHECK(prdTruth.record(std::make_unique<PRD_MultiTruthCollection>()));
24 
25  SG::ReadHandle readHandle{m_simHitKey, ctx};
26  if (!readHandle.isPresent()) {
27  ATH_MSG_FATAL("Failed to load container "<<m_simHitKey.fullKey());
28  return StatusCode::FAILURE;
29  }
30  for (const xAOD::MuonSimHit* truthHit : *readHandle) {
31  if (!truthHit->genParticleLink().isValid()){
32  continue;
33  }
34  const auto& pl{truthHit->genParticleLink()};
36  using truthiter = PRD_MultiTruthCollection::iterator;
37  const Identifier prdId = truthHit->identify();
38  std::pair<truthiter, truthiter> r = prdTruth->equal_range(prdId);
39  if (r.second == std::find_if(r.first, r.second,
40  [pl](const PRD_MultiTruthCollection::value_type& prd_to_truth) {
41  return prd_to_truth.second == pl;
42  })) {
43  prdTruth->insert(std::make_pair(prdId, pl));
44  }
45  }
46  return StatusCode::SUCCESS;
47  }
48 }
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
beamspotman.r
def r
Definition: beamspotman.py:676
MuonSimHitHelpers.h
xAOD::MuonSimHit_v1
Definition: MuonSimHit_v1.h:18
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
UtilFunctions.h
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
MuonR4::SdoMultiTruthMaker::initialize
virtual StatusCode initialize() override final
Definition: SdoMultiTruthMaker.cxx:13
SdoMultiTruthMaker.h
WriteHandle.h
Handle class for recording to StoreGate.
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuonR4::SdoMultiTruthMaker::m_writeKey
SG::WriteHandleKey< PRD_MultiTruthCollection > m_writeKey
Definition: SdoMultiTruthMaker.h:27
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
MuonR4
This header ties the generic definitions in this package.
Definition: HoughEventData.h:16
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
ReadHandle.h
Handle class for reading from StoreGate.
MuonR4::SdoMultiTruthMaker::execute
virtual StatusCode execute(const EventContext &ctx) const override final
Definition: SdoMultiTruthMaker.cxx:20
MuonR4::SdoMultiTruthMaker::m_simHitKey
SG::ReadHandleKey< xAOD::MuonSimHitContainer > m_simHitKey
Definition: SdoMultiTruthMaker.h:26
Identifier
Definition: IdentifierFieldParser.cxx:14