ATLAS Offline Software
Loading...
Searching...
No Matches
TrkAmbiguityScore.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
7
8Trk::TrkAmbiguityScore::TrkAmbiguityScore(const std::string& name, ISvcLocator* pSvcLocator) :
9 AthReentrantAlgorithm (name, pSvcLocator) {}
10
11//--------------------------------------------------------------------------
13= default;
14
15//-----------------------------------------------------------------------
16StatusCode
18 ATH_MSG_VERBOSE( "TrkAmbiguityScore::initialize(). " );
19 ATH_CHECK(m_scoreTool.retrieve( DisableTool{m_scoreTool.empty()} ));
20 ATH_CHECK(m_scoredTracksKey.initialize());
21 ATH_CHECK(m_originTracksKey.initialize());
22 return StatusCode::SUCCESS;
23}
24
25//-------------------------------------------------------------------------
26StatusCode
27Trk::TrkAmbiguityScore::execute(const EventContext& ctx) const{
28 std::vector<SG::ReadHandle<TrackCollection>> handles = m_originTracksKey.makeHandles(ctx);
29 ATH_MSG_DEBUG(handles.size() << " handles are requested");
30 if (handles.size() > 1){
31 ATH_MSG_WARNING("More than one collection has been requested. Only the first collection is taken");
32 }
33 auto & theTrackCollectionHandle = handles.at(0);
34 if (not theTrackCollectionHandle.isValid()){
35 ATH_MSG_FATAL( "Could not retrieve tracks from "<< theTrackCollectionHandle.key() );
36 return StatusCode::FAILURE;
37 }
38 const auto & theTrackCollection = *theTrackCollectionHandle;
39 std::unique_ptr<TracksScores> scoredTracks(new TracksScores);
40 if (m_scoreTool.isEnabled()){
41 m_scoreTool->process(theTrackCollection, scoredTracks.get());
42 } else {
43 scoredTracks->reserve(theTrackCollection.size());
44 for(const Track* trk: theTrackCollection ){
45 scoredTracks->push_back( std::pair<const Track*, float>(trk, 0));//TODO: logpT
46 }
47 }
48
49 SG::WriteHandle<TracksScores> scoredTracksHandle(m_scoredTracksKey, ctx);
50 ATH_CHECK(scoredTracksHandle.record(std::move(scoredTracks)));
51 return StatusCode::SUCCESS;
52}
53
54//---------------------------------------------------------------------------
55
56
57StatusCode
59{
60 if (m_scoreTool.isEnabled()) {
61 m_scoreTool->statistics();
62 }
63 return StatusCode::SUCCESS;
64}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_FATAL(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
An algorithm that can be simultaneously executed in multiple threads.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
SG::ReadHandleKeyArray< TrackCollection > m_originTracksKey
SG::WriteHandleKey< TracksScores > m_scoredTracksKey
StatusCode execute(const EventContext &ctx) const override
StatusCode initialize(void) override
ToolHandle< ITrackAmbiguityScoreProcessorTool > m_scoreTool
StatusCode finalize(void) override
TrkAmbiguityScore(const std::string &name, ISvcLocator *pSvcLocator)
std::vector< std::pair< const Track *, float > > TracksScores