Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
ActsEMBremCollectionBuilder.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 #include "StoreGate/ReadHandle.h"
13 
15 
17 
19  const std::string &name, ISvcLocator *pSvcLocator)
20  : AthReentrantAlgorithm(name, pSvcLocator) {}
21 
24 
26  m_actsTrackLinkKey.key();
27  ATH_CHECK(m_actsTrackLinkKey.initialize());
28 
30  ATH_CHECK(m_actsFitter.retrieve());
34 
35  return StatusCode::SUCCESS;
36 }
37 
39  ATH_MSG_INFO("====> GSF fitting Statistics ============");
40  ATH_MSG_INFO("Input Tracks: " << m_nInputTracks);
41  ATH_MSG_INFO("Output Tracks " << m_nRefittedTracks);
42  ATH_MSG_INFO("<========================================");
43  return StatusCode::SUCCESS;
44 }
45 
46 StatusCode ActsEMBremCollectionBuilder::execute(const EventContext &ctx) const {
47  SG::ReadHandle<xAOD::TrackParticleContainer> selectedTrackParticles(
49  ATH_CHECK(selectedTrackParticles.isValid());
50 
52 
53  std::vector<const xAOD::TrackParticle *> siliconTrackParticles;
54  siliconTrackParticles.reserve(16);
55 
56  for (const xAOD::TrackParticle *trackParticle : *selectedTrackParticles) {
57  int nSiliconHits_trk =
58  summaryValueInt(*trackParticle, xAOD::numberOfSCTHits, 0);
59  nSiliconHits_trk +=
60  summaryValueInt(*trackParticle, xAOD::numberOfPixelHits, 0);
61  if (nSiliconHits_trk >= m_MinNoSiHits) {
62  siliconTrackParticles.push_back(trackParticle);
63  }
64  }
65 
66  ATH_CHECK(refitActsTracks(ctx, siliconTrackParticles, trackContainer));
67 
68  std::unique_ptr<ActsTrk::TrackContainer> outputTracks =
70  std::move(trackContainer),
71  m_trackingGeometryTool->getGeometryContext(ctx).context(), ctx);
72 
73  SG::WriteHandle<ActsTrk::TrackContainer> refittedTrackHandle(
74  m_refittedTracksKey, ctx);
75 
76  if (refittedTrackHandle.record(std::move(outputTracks)).isFailure()) {
77  ATH_MSG_ERROR("Failed to record refitted ACTS tracks with key "
79  return StatusCode::FAILURE;
80  }
81 
82  const size_t inputCount = selectedTrackParticles->size();
83  const size_t refittedCount = trackContainer.size();
84 
85  m_nInputTracks.fetch_add(inputCount, std::memory_order_relaxed);
86  m_nRefittedTracks.fetch_add(refittedCount, std::memory_order_relaxed);
87 
88  return StatusCode::SUCCESS;
89 }
90 
92  const EventContext &ctx,
93  const std::vector<const xAOD::TrackParticle *> &input,
95  for (const xAOD::TrackParticle *in : input) {
98  decoHandleActsTrackLink(m_actsTrackLinkKey, ctx);
99  const ElementLink<ActsTrk::TrackContainer> &actsTrackLink =
100  decoHandleActsTrackLink(*in);
101 
102  if (!actsTrackLink.isValid()) {
103  ATH_MSG_WARNING("Invalid ElementLink to ACTS track for track particle ");
104  continue;
105  }
106 
107  std::optional<ActsTrk::TrackContainer::ConstTrackProxy> optional_track =
108  *actsTrackLink;
109  if (!optional_track.has_value()) {
111  "Could not retrieve track from valid ElementLink for track particle");
112  continue;
113  }
114 
115  ActsTrk::TrackContainer::ConstTrackProxy actstrack = optional_track.value();
116 
117  ATH_CHECK(m_actsFitter->fit(ctx, actstrack, trackContainer));
118  }
119  return StatusCode::SUCCESS;
120 }
ActsTrk::MutableTrackContainerHandlesHelper::moveToConst
std::unique_ptr< ActsTrk::TrackContainer > moveToConst(ActsTrk::MutableTrackContainer &&tc, const Acts::GeometryContext &geoContext, const EventContext &evtContext) const
produces ActsTrk::ConstTrackContainer with all backends stored in SG
Definition: TrackContainerHandlesHelper.cxx:130
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
ActsEMBremCollectionBuilder::m_actsTrackLinkKey
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_actsTrackLinkKey
Definition: ActsEMBremCollectionBuilder.h:62
ActsEMBremCollectionBuilder::ActsEMBremCollectionBuilder
ActsEMBremCollectionBuilder(const std::string &name, ISvcLocator *pSvcLocator)
Definition: ActsEMBremCollectionBuilder.cxx:18
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
TruthParticleContainer.h
xAOD::TrackParticleContainer
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
Definition: Event/xAOD/xAODTracking/xAODTracking/TrackParticleContainer.h:14
ActsTrk::prefixFromTrackContainerName
std::string prefixFromTrackContainerName(const std::string &tracks)
Parse TrackContainer name to get the prefix for backends The name has to contain XYZTracks,...
Definition: TrackContainerHandlesHelper.cxx:18
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:260
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
ActsTrk::MutableTrackContainerHandlesHelper::initialize
StatusCode initialize(const std::string &prefix)
Sets up the handles.
Definition: TrackContainerHandlesHelper.cxx:51
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:74
ActsEMBremCollectionBuilder.h
ActsEMBremCollectionBuilder::m_nRefittedTracks
std::atomic_uint m_nRefittedTracks
Definition: ActsEMBremCollectionBuilder.h:81
WriteHandle.h
Handle class for recording to StoreGate.
EgammaxAODHelpers.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
SG::ReadDecorHandle
Handle class for reading a decoration on an object.
Definition: StoreGate/StoreGate/ReadDecorHandle.h:94
TrackParticleAuxContainer.h
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
ActsEMBremCollectionBuilder::m_refittedTracksBackendHandles
ActsTrk::MutableTrackContainerHandlesHelper m_refittedTracksBackendHandles
Definition: ActsEMBremCollectionBuilder.h:74
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
ActsEMBremCollectionBuilder::refitActsTracks
StatusCode refitActsTracks(const EventContext &ctx, const std::vector< const xAOD::TrackParticle * > &input, ActsTrk::MutableTrackContainer &trackContainer) const
Definition: ActsEMBremCollectionBuilder.cxx:91
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
python.TrackLeptonConfig.trackContainer
string trackContainer
Definition: TrackLeptonConfig.py:23
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
ActsEMBremCollectionBuilder::m_actsFitter
ToolHandle< ActsTrk::IFitterTool > m_actsFitter
Definition: ActsEMBremCollectionBuilder.h:59
ActsEMBremCollectionBuilder::m_nInputTracks
std::atomic_uint m_nInputTracks
Definition: ActsEMBremCollectionBuilder.h:80
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
xAOD::EgammaHelpers::summaryValueInt
int summaryValueInt(const xAOD::TrackParticle &tp, const xAOD::SummaryType &info, int deflt=-999)
return the summary value for a TrackParticle or default value (-999) (to be used mostly in python whe...
Definition: EgammaxAODHelpers.cxx:161
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
errorcheck.h
Helpers for checking error return status codes and reporting errors.
ActsEMBremCollectionBuilder::m_MinNoSiHits
Gaudi::Property< int > m_MinNoSiHits
@Cut on minimum silicon hits
Definition: ActsEMBremCollectionBuilder.h:55
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
ActsEMBremCollectionBuilder::initialize
virtual StatusCode initialize() override final
Definition: ActsEMBremCollectionBuilder.cxx:22
ActsEMBremCollectionBuilder::m_refittedTracksKey
SG::WriteHandleKey< ActsTrk::TrackContainer > m_refittedTracksKey
Definition: ActsEMBremCollectionBuilder.h:76
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ActsEMBremCollectionBuilder::execute
virtual StatusCode execute(const EventContext &ctx) const override final
Definition: ActsEMBremCollectionBuilder.cxx:46
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:269
ActsEMBremCollectionBuilder::finalize
virtual StatusCode finalize() override final
Definition: ActsEMBremCollectionBuilder.cxx:38
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
ReadHandle.h
Handle class for reading from StoreGate.
TruthParticle.h
ActsEMBremCollectionBuilder::m_trackingGeometryTool
ToolHandle< IActsTrackingGeometryTool > m_trackingGeometryTool
Definition: ActsEMBremCollectionBuilder.h:71
ActsEMBremCollectionBuilder::m_selectedTrackParticleContainerKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_selectedTrackParticleContainerKey
Names of input output collections.
Definition: ActsEMBremCollectionBuilder.h:67
ActsTrk::MutableTrackContainer
Definition: TrackContainer.h:122
TrackParticleContainer.h