ATLAS Offline Software
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 
8 
11 namespace MuonR4 {
13 
14  ATH_CHECK(m_simHitKey.initialize());
16  return StatusCode::SUCCESS;
17  }
18 
19  StatusCode SdoMultiTruthMaker::execute(const EventContext& ctx) const {
20 
21  SG::WriteHandle prdTruth{m_writeKey, ctx};
22  ATH_CHECK(prdTruth.record(std::make_unique<PRD_MultiTruthCollection>()));
23 
24  const xAOD::MuonSimHitContainer* hitContainer{nullptr};
25  ATH_CHECK(SG::get( hitContainer, m_simHitKey, ctx));
26  for (const xAOD::MuonSimHit* truthHit : *hitContainer) {
27  if (!truthHit->genParticleLink().isValid()){
28  continue;
29  }
30  const auto& pl{truthHit->genParticleLink()};
32  using truthiter = PRD_MultiTruthCollection::iterator;
33  const Identifier prdId = truthHit->identify();
34  std::pair<truthiter, truthiter> r = prdTruth->equal_range(prdId);
35  if (r.second == std::find_if(r.first, r.second,
36  [pl](const PRD_MultiTruthCollection::value_type& prd_to_truth) {
37  return prd_to_truth.second == pl;
38  })) {
39  prdTruth->insert(std::make_pair(prdId, pl));
40  }
41  }
42  return StatusCode::SUCCESS;
43  }
44 }
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
beamspotman.r
def r
Definition: beamspotman.py:672
MuonSimHitHelpers.h
xAOD::MuonSimHit_v1
Definition: MuonSimHit_v1.h:18
UtilFunctions.h
MuonR4::SdoMultiTruthMaker::initialize
virtual StatusCode initialize() override final
Definition: SdoMultiTruthMaker.cxx:12
SdoMultiTruthMaker.h
WriteHandle.h
Handle class for recording to StoreGate.
SG::get
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
Definition: ReadCondHandle.h:287
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
Output key of the written PRD_MultiTruthCollection.
Definition: SdoMultiTruthMaker.h:32
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
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
MuonR4
This header ties the generic definitions in this package.
Definition: HoughEventData.h:16
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
MuonR4::SdoMultiTruthMaker::execute
virtual StatusCode execute(const EventContext &ctx) const override final
Definition: SdoMultiTruthMaker.cxx:19
MuonR4::SdoMultiTruthMaker::m_simHitKey
SG::ReadHandleKey< xAOD::MuonSimHitContainer > m_simHitKey
Input key of the SDO container to translate (E.g.
Definition: SdoMultiTruthMaker.h:30
Identifier
Definition: IdentifierFieldParser.cxx:14