ATLAS Offline Software
Loading...
Searching...
No Matches
CopyPRD_MultiTruthCollection.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7
8CopyPRD_MultiTruthCollection::CopyPRD_MultiTruthCollection(const std::string &name, ISvcLocator *pSvcLocator)
9 : AthReentrantAlgorithm(name, pSvcLocator) { }
10
12{
13 ATH_MSG_DEBUG("Initializing...");
14
15 // Check and initialize keys
16 ATH_CHECK( m_inputKey.initialize() );
17 ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_inputKey);
18 ATH_CHECK( m_outputKey.initialize() );
19 ATH_MSG_VERBOSE("Initialized WriteHandleKey: " << m_outputKey);
20
21 return StatusCode::SUCCESS;
22}
23
24StatusCode CopyPRD_MultiTruthCollection::execute(const EventContext& ctx) const
25{
26 ATH_MSG_DEBUG("execute() begin");
27 // Reading the input container
28 ATH_MSG_VERBOSE("Retrieving input container");
29
31 if (!inputContainer.isValid()) {
32 ATH_MSG_ERROR("Could not get pileup PRD_MultiTruthCollection " << inputContainer.name() << " from store " << inputContainer.store());
33 return StatusCode::FAILURE;
34 }
35 ATH_MSG_DEBUG("Found pileup PRD_MultiTruthCollection " << inputContainer.name() << " in store " << inputContainer.store());
36
37 // Creating output RDO container
39 ATH_CHECK(outputContainer.record(std::make_unique<PRD_MultiTruthCollection>()));
40 if (!outputContainer.isValid()) {
41 ATH_MSG_ERROR("Could not record output PRD_MultiTruthCollection " << outputContainer.name() << " to store " << outputContainer.store());
42 return StatusCode::FAILURE;
43 }
44 ATH_MSG_DEBUG("Recorded output PRD_MultiTruthCollection container " << outputContainer.name() << " in store " << outputContainer.store());
45
46 for(const std::pair<const Identifier, HepMcParticleLink>& element : *inputContainer){
47 outputContainer->insert(std::make_pair(element.first,element.second));
48 }
49 return StatusCode::SUCCESS;
50}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_DEBUG(x)
An algorithm that can be simultaneously executed in multiple threads.
SG::WriteHandleKey< PRD_MultiTruthCollection > m_outputKey
virtual StatusCode execute(const EventContext &ctx) const override
virtual StatusCode initialize() override
CopyPRD_MultiTruthCollection(const std::string &name, ISvcLocator *pSvcLocator)
SG::ReadHandleKey< PRD_MultiTruthCollection > m_inputKey
virtual bool isValid() override final
Can the handle be successfully dereferenced?
std::string store() const
Return the name of the store holding the object we are proxying.
const std::string & name() const
Return the StoreGate ID for the referenced object.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
virtual bool isValid() override final
Can the handle be successfully dereferenced?