ATLAS Offline Software
Loading...
Searching...
No Matches
InDetTrackSelectionToolWrapper.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6// InDetTrackSelectionToolWrapper.cxx
8
13#include <vector>
14#include <string>
15#include <string_view>
16
17namespace DerivationFramework {
18
20 {
21 if (m_decorationKey.empty()) {
22 ATH_MSG_ERROR("No decoration prefix name provided for the output of InDetTrackSelectionToolWrapper!");
23 return StatusCode::FAILURE;
24 }
25
26 ATH_CHECK( m_tracksKey.initialize() );
27 std::string::size_type pos = m_tracksKey.key().find('+');
28 pos = (pos != std::string::npos) ? pos+1 : 0;
29 std::string_view container_name( &(m_tracksKey.key()[pos]), m_tracksKey.key().size() - pos);
30 std::string_view decor_name(m_decorationKey.key());
31 if (!(decor_name.compare(0,m_tracksKey.key().size(),std::string_view(m_tracksKey.key()))==0 && decor_name.compare(0,container_name.size(),container_name)==0)) {
32 m_decorationKey = std::string(container_name) + "." + m_decorationKey.key();
33 }
34 std::cout << "DEBUG " << name() << " InDetTrackSelectionToolWrapper::initialize container key " << m_tracksKey.key() << " -> " << container_name << " decor=" << m_decorationKey.key() << std::endl;
35 ATH_CHECK(m_decorationKey.initialize());
36 ATH_MSG_INFO("Using " << m_tracksKey << "as the source collection for inner detector track particles");
37 ATH_CHECK(m_tool.retrieve());
38 ATH_MSG_INFO(" InDetTrackSelectionToolWrapper::initialize i: " << inputHandles().size() << " o:" << outputHandles().size() );
39 return StatusCode::SUCCESS;
40 }
41
42
43 StatusCode InDetTrackSelectionToolWrapper::addBranches(const EventContext& ctx) const
44 {
45
46 // retrieve track container
48 if (!tracks.isValid()) {
49 //if( ! tracks ) {
50 ATH_MSG_ERROR ("Couldn't retrieve TrackParticles with key: " << tracks.key() );
51 return StatusCode::FAILURE;
52 }
53 // Run tool for each element and decorate with the decision
55 for (const auto *trItr : *tracks) {
56 accept( *trItr ) = m_tool->accept(trItr).getCutResult(0);
57 } // end of loop over tracks
58
59 return StatusCode::SUCCESS;
60 }
61
62}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
Handle class for reading from StoreGate.
Handle class for adding a decoration to an object.
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_tracksKey
ToolHandle< InDet::IInDetTrackSelectionTool > m_tool
virtual StatusCode addBranches(const EventContext &ctx) const override final
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_decorationKey
virtual bool isValid() override final
Can the handle be successfully dereferenced?
virtual const std::string & key() const override final
Return the StoreGate ID for the referenced object.
Handle class for adding a decoration to an object.
THE reconstruction tool.