ATLAS Offline Software
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 
10 CopyPileupParticleTruthInfo::CopyPileupParticleTruthInfo(const std::string &name, ISvcLocator *pSvcLocator)
11  : AthReentrantAlgorithm(name, pSvcLocator) {}
12 
14 {
15  ATH_MSG_DEBUG("Initializing...");
16 
17  // Check and initialize keys
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 
26 StatusCode 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 }
DataVector::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
CopyPileupParticleTruthInfo::execute
virtual StatusCode execute(const EventContext &ctx) const override
Definition: CopyPileupParticleTruthInfo.cxx:26
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
CopyPileupParticleTruthInfo::m_outputKey
SG::WriteHandleKey< xAOD::TruthParticleContainer > m_outputKey
Definition: CopyPileupParticleTruthInfo.h:22
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
SG::VarHandleBase::name
const std::string & name() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleBase.cxx:75
CopyPileupParticleTruthInfo::initialize
virtual StatusCode initialize() override
Definition: CopyPileupParticleTruthInfo.cxx:13
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
CopyPileupParticleTruthInfo::m_bkgInputKey
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_bkgInputKey
Definition: CopyPileupParticleTruthInfo.h:21
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
TruthParticleAuxContainer.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:41
SG::VarHandleBase::store
std::string store() const
Return the name of the store holding the object we are proxying.
Definition: StoreGate/src/VarHandleBase.cxx:379
xAOD::TruthParticle
TruthParticle_v1 TruthParticle
Typedef to implementation.
Definition: Event/xAOD/xAODTruth/xAODTruth/TruthParticle.h:15
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
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
SG::WriteHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
CopyPileupParticleTruthInfo.h
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
CopyPileupParticleTruthInfo::CopyPileupParticleTruthInfo
CopyPileupParticleTruthInfo(const std::string &name, ISvcLocator *pSvcLocator)
Definition: CopyPileupParticleTruthInfo.cxx:10