ATLAS Offline Software
Loading...
Searching...
No Matches
CopyPileupParticleTruthInfo.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
6
8
9
10CopyPileupParticleTruthInfo::CopyPileupParticleTruthInfo(const std::string &name, ISvcLocator *pSvcLocator)
11 : AthReentrantAlgorithm(name, pSvcLocator) {}
12
14{
15 ATH_MSG_DEBUG("Initializing...");
16
17 // Check and initialize keys
18 ATH_CHECK( m_bkgInputKey.initialize() );
19 ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_bkgInputKey);
20 ATH_CHECK( m_outputKey.initialize() );
21 ATH_MSG_VERBOSE("Initialized WriteHandleKey: " << m_outputKey);
22
23 return StatusCode::SUCCESS;
24}
25
26StatusCode CopyPileupParticleTruthInfo::execute(const EventContext& ctx) const
27{
28 ATH_MSG_DEBUG("execute() begin");
29
30 // Reading the input timings
31 ATH_MSG_VERBOSE("Retrieving input Truth particle containers");
32
34 if (!bkgContainer.isValid()) {
35 ATH_MSG_ERROR("Could not get background Truth particle container " << bkgContainer.name() << " from store " << bkgContainer.store());
36 return StatusCode::FAILURE;
37 }
38 ATH_MSG_DEBUG("Found background Truth particle container " << bkgContainer.name() << " in store " << bkgContainer.store());
39
40 // Creating output Truth particle container
42 ATH_CHECK(outputContainer.record(std::make_unique<xAOD::TruthParticleContainer>(), std::make_unique<xAOD::TruthParticleAuxContainer>()));
43 if (!outputContainer.isValid()) {
44 ATH_MSG_ERROR("Could not record output Truth particle container " << outputContainer.name() << " to store " << outputContainer.store());
45 return StatusCode::FAILURE;
46 }
47 ATH_MSG_DEBUG("Recorded output Truth particle container " << outputContainer.name() << " in store " << outputContainer.store());
48
49 outputContainer->reserve(bkgContainer->size());
50
51 for (const xAOD::TruthParticle *bkgTruthParticle : *bkgContainer.cptr()) {
52 xAOD::TruthParticle *xTruthParticle = new xAOD::TruthParticle();
53 outputContainer->push_back(xTruthParticle);
54 *xTruthParticle = *bkgTruthParticle;
55 }
56
57 ATH_MSG_DEBUG("execute() end");
58 return StatusCode::SUCCESS;
59}
#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.
CopyPileupParticleTruthInfo(const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode execute(const EventContext &ctx) const override
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_bkgInputKey
SG::WriteHandleKey< xAOD::TruthParticleContainer > m_outputKey
virtual StatusCode initialize() override
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const_pointer_type cptr()
Dereference the pointer.
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?
TruthParticle_v1 TruthParticle
Typedef to implementation.