ATLAS Offline Software
Loading...
Searching...
No Matches
PFTrackPreselAlg.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include "PFTrackPreselAlg.h"
10#include <memory>
11
12PFTrackPreselAlg::PFTrackPreselAlg(const std::string& name, ISvcLocator* pSvcLocator)
13 : AthReentrantAlgorithm(name, pSvcLocator)
14{
15}
16
18
20{
21 ATH_CHECK( m_inputTracksKey.initialize() );
22 ATH_CHECK( m_outputTracksKey.initialize() );
23
24 ATH_CHECK( m_outputDecorKey.initialize() );
25
26 ATH_CHECK( m_trackSelTool.retrieve() );
27
28 return StatusCode::SUCCESS;
29}
30
31StatusCode PFTrackPreselAlg::execute(const EventContext &ctx) const
32{
33 auto input = SG::makeHandle(m_inputTracksKey, ctx);
34 if (!input.isValid())
35 {
36 ATH_MSG_ERROR("Failed to retrieve " << m_inputTracksKey);
37 return StatusCode::FAILURE;
38 }
39
41
42 auto output = std::make_unique<ConstDataVector<xAOD::TrackParticleContainer>>(SG::VIEW_ELEMENTS);
43 for (const xAOD::TrackParticle* itrk : *input)
44 {
45 if (itrk->pt() > m_upperPtCut || !m_trackSelTool->accept(*itrk))
46 {
47 decPass(*itrk) = false;
48 continue;
49 }
50 decPass(*itrk) = true;
51 output->push_back(itrk);
52 }
53 auto outputHandle = SG::makeHandle(m_outputTracksKey, ctx);
54 ATH_CHECK(outputHandle.put(std::move(output)) != nullptr);
55
56 return StatusCode::SUCCESS;
57}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
DataVector adapter that acts like it holds const pointers.
Handle class for reading from StoreGate.
Handle class for adding a decoration to an object.
Handle class for recording to StoreGate.
An algorithm that can be simultaneously executed in multiple threads.
Gaudi::Property< float > m_upperPtCut
ToolHandle< InDet::IInDetTrackSelectionTool > m_trackSelTool
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_inputTracksKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_outputDecorKey
SG::WriteHandleKey< xAOD::TrackParticleContainer > m_outputTracksKey
PFTrackPreselAlg(const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode initialize() override
virtual StatusCode execute(const EventContext &ctx) const override
Handle class for adding a decoration to an object.
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
TrackParticle_v1 TrackParticle
Reference the current persistent version: