ATLAS Offline Software
Loading...
Searching...
No Matches
ActsTrk::MutableTrackContainerHandlesHelper Class Reference

#include <TrackContainerHandlesHelper.h>

Collaboration diagram for ActsTrk::MutableTrackContainerHandlesHelper:

Public Member Functions

template<class PropOwner>
 MutableTrackContainerHandlesHelper (PropOwner *owner)
 Constructor taking the pointer to the class holding the object used to declare the data dependency from the WriteHandleKeys to the AvalancheScheduler.
StatusCode initialize (const std::string &prefix)
 Sets up the handles.
std::unique_ptr< ActsTrk::PersistentTrackContainermoveToConst (ActsTrk::MutablePersistentTrackContainer &&tc, const Acts::GeometryContext &geoContext, const EventContext &evtContext) const
 produces ActsTrk::ConstTrackContainer with all backends stored in SG

Private Member Functions

std::unique_ptr< ActsTrk::MultiTrajectorymoveToConst (ActsTrk::MutableMultiTrajectory &&mmtj, const EventContext &context) const
 helper to record MTJ

Private Attributes

SG::WriteHandleKey< xAOD::TrackStateContainerm_statesKey
SG::WriteHandleKey< xAOD::TrackParametersContainerm_parametersKey
SG::WriteHandleKey< xAOD::TrackJacobianContainerm_jacobiansKey
SG::WriteHandleKey< xAOD::TrackMeasurementContainerm_measurementsKey
SG::WriteHandleKey< xAOD::TrackSurfaceContainerm_surfacesKey
SG::WriteHandleKey< ActsTrk::MultiTrajectorym_mtjKey
SG::WriteHandleKey< xAOD::TrackSummaryContainerm_xAODTrackSummaryKey
SG::WriteHandleKey< xAOD::TrackSurfaceContainerm_trackSurfacesKey
SG::WriteHandleKey< ActsTrk::TrackSummaryContainerm_trackSummaryKey

Detailed Description

Definition at line 33 of file TrackContainerHandlesHelper.h.

Constructor & Destructor Documentation

◆ MutableTrackContainerHandlesHelper()

template<class PropOwner>
ActsTrk::MutableTrackContainerHandlesHelper::MutableTrackContainerHandlesHelper ( PropOwner * owner)

Constructor taking the pointer to the class holding the object used to declare the data dependency from the WriteHandleKeys to the AvalancheScheduler.

The object should be defined in the header like ActsTrk::MutableTrackContainerHandlesHelper m_trackHelper{this};

Member Function Documentation

◆ initialize()

StatusCode ActsTrk::MutableTrackContainerHandlesHelper::initialize ( const std::string & prefix)

Sets up the handles.

  • prefix - common prefix for all the names the value would typically be taken from configurable string property

Definition at line 48 of file TrackContainerHandlesHelper.cxx.

49 {
50 m_statesKey = prefix + "TrackStates";
51 m_parametersKey = prefix + "TrackParameters";
52 m_jacobiansKey = prefix + "TrackJacobians";
53 m_measurementsKey = prefix + "TrackMeasurements";
54 m_surfacesKey = prefix + "TrackStateSurfaces";
55 m_mtjKey =
56 prefix + "MultiTrajectory"; // identical names, underlying types are distinct
63
64 // Track Container backends
65 m_xAODTrackSummaryKey = prefix + "TrackSummary";
66 m_trackSurfacesKey = prefix + "TrackSurfaces";
68 prefix +
69 "TrackSummary"; // identical names, underlying types are distinct
70
74 return StatusCode::SUCCESS;
75}
#define INIT_CHECK(key)
SG::WriteHandleKey< xAOD::TrackParametersContainer > m_parametersKey
SG::WriteHandleKey< xAOD::TrackMeasurementContainer > m_measurementsKey
SG::WriteHandleKey< xAOD::TrackSurfaceContainer > m_trackSurfacesKey
SG::WriteHandleKey< xAOD::TrackJacobianContainer > m_jacobiansKey
SG::WriteHandleKey< ActsTrk::MultiTrajectory > m_mtjKey
SG::WriteHandleKey< xAOD::TrackSummaryContainer > m_xAODTrackSummaryKey
SG::WriteHandleKey< ActsTrk::TrackSummaryContainer > m_trackSummaryKey
SG::WriteHandleKey< xAOD::TrackStateContainer > m_statesKey
SG::WriteHandleKey< xAOD::TrackSurfaceContainer > m_surfacesKey

◆ moveToConst() [1/2]

std::unique_ptr< ActsTrk::MultiTrajectory > ActsTrk::MutableTrackContainerHandlesHelper::moveToConst ( ActsTrk::MutableMultiTrajectory && mmtj,
const EventContext & context ) const
private

helper to record MTJ

Definition at line 78 of file TrackContainerHandlesHelper.cxx.

79 {
80
81 mmtj.trim();
82
83 auto statesBackendHandle = SG::makeHandle(m_statesKey, evtContext);
84 auto statesInterface =
86 mmtj.trackStatesAux());
87 RECORD_xAOD(m_statesKey, statesInterface, mmtj.m_trackStatesAux, evtContext);
88
89 auto parametersInterface =
91 mmtj.trackParametersAux());
92 RECORD_xAOD(m_parametersKey, parametersInterface, mmtj.m_trackParametersAux, evtContext);
93
94 auto jacobiansInterface =
96 mmtj.trackJacobiansAux());
97 RECORD_xAOD(m_jacobiansKey, jacobiansInterface, mmtj.m_trackJacobiansAux, evtContext);
98
99 auto measurementsInterface =
101 mmtj.trackMeasurementsAux());
102 RECORD_xAOD(m_measurementsKey, measurementsInterface, mmtj.m_trackMeasurementsAux, evtContext);
103
104 auto surfacesBackendHandle = SG::makeHandle(m_surfacesKey, evtContext);
106
107 // construct const MTJ version
108 auto cmtj = std::make_unique<ActsTrk::MultiTrajectory>(
109 DataLink<xAOD::TrackStateAuxContainer>(m_statesKey.key() + "Aux.",
110 evtContext),
111 DataLink<xAOD::TrackParametersAuxContainer>(
112 m_parametersKey.key() + "Aux.", evtContext),
113 DataLink<xAOD::TrackJacobianAuxContainer>(
114 m_jacobiansKey.key() + "Aux.", evtContext),
115 DataLink<xAOD::TrackMeasurementAuxContainer>(
116 m_measurementsKey.key() + "Aux.", evtContext),
117 DataLink<xAOD::TrackSurfaceAuxContainer>(
118 m_surfacesKey.key() + "Aux.", evtContext)
119 );
120 cmtj->moveSurfaces(&mmtj);
121 cmtj->moveLinks(&mmtj);
122
123 return cmtj;
124}
#define RECORD_xAOD(key, container, auxContainer, ctx)
xAOD::TrackJacobianAuxContainer * trackJacobiansAux()
std::unique_ptr< xAOD::TrackParametersAuxContainer > m_trackParametersAux
const xAOD::TrackParametersAuxContainer * trackParametersAux() const
std::unique_ptr< xAOD::TrackStateAuxContainer > m_trackStatesAux
std::unique_ptr< xAOD::TrackSurfaceAuxContainer > m_surfacesBackendAux
std::unique_ptr< xAOD::TrackMeasurementAuxContainer > m_trackMeasurementsAux
xAOD::TrackMeasurementAuxContainer * trackMeasurementsAux()
std::unique_ptr< xAOD::TrackSurfaceContainer > m_surfacesBackend
xAOD::TrackStateAuxContainer * trackStatesAux()
std::unique_ptr< xAOD::TrackJacobianAuxContainer > m_trackJacobiansAux
std::unique_ptr< IFACE > makeInterfaceContainer(const AUX *aux)
helper to construct interface container for already filled Aux container TODO maybe should be moved t...
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())

◆ moveToConst() [2/2]

std::unique_ptr< ActsTrk::PersistentTrackContainer > ActsTrk::MutableTrackContainerHandlesHelper::moveToConst ( ActsTrk::MutablePersistentTrackContainer && tc,
const Acts::GeometryContext & geoContext,
const EventContext & evtContext ) const

produces ActsTrk::ConstTrackContainer with all backends stored in SG

  • tc - MutableTrackContainer the source (will be disassembled after the operation)
  • - geoContext - geometry context, needed in surfaces conversion
  • evtContext - event context (needed for SG operations)

Definition at line 127 of file TrackContainerHandlesHelper.cxx.

128 {
129
130
131 std::unique_ptr<ActsTrk::MultiTrajectory> constMtj =
132 moveToConst(std::move(tc.trackStateContainer()), evtContext);
133
134 auto constMtjHandle = SG::makeHandle(m_mtjKey, evtContext);
135 if (constMtjHandle.record(std::move(constMtj)).isFailure()) {
136 throw std::runtime_error(
137 "MutableTrackContainerHandlesHelper::moveToConst, can't record "
138 "ConstMultiTrajectory");
139 }
140
141 auto trackSurfacesAux = std::make_unique<xAOD::TrackSurfaceAuxContainer>();
142 tc.container().encodeSurfaces(trackSurfacesAux.get(), geoContext);
143
144 auto interfaceTrackSummaryContainer =
146 tc.container().m_mutableTrackBackendAux.get());
147 RECORD_xAOD(m_xAODTrackSummaryKey, interfaceTrackSummaryContainer, tc.container().m_mutableTrackBackendAux, evtContext);
148
150 trackSurfacesAux.get());
151 RECORD_xAOD(m_trackSurfacesKey, trackSurfaces, trackSurfacesAux, evtContext);
152
153 auto constTrackSummary = std::make_unique<ActsTrk::TrackSummaryContainer>(
154 DataLink<xAOD::TrackSummaryContainer>(m_xAODTrackSummaryKey.key(),
155 evtContext));
156 constTrackSummary->restoreDecorations();
157 constTrackSummary->fillFrom(tc.container());
158
159 auto constTrackSummaryHandle = SG::makeHandle(m_trackSummaryKey, evtContext);
160 if (constTrackSummaryHandle.record(std::move(constTrackSummary))
161 .isFailure()) {
162 throw std::runtime_error(
163 "MutableTrackContainerHandlesHelper::moveToConst, can't record "
164 "TrackSummary");
165 }
166 auto constTrack = std::make_unique<ActsTrk::PersistentTrackContainer>(
167 DataLink<ActsTrk::TrackSummaryContainer>(m_trackSummaryKey.key(),
168 evtContext),
169 DataLink<ActsTrk::MultiTrajectory>(m_mtjKey.key(), evtContext));
170 return constTrack;
171}
static Double_t tc
std::unique_ptr< ActsTrk::PersistentTrackContainer > moveToConst(ActsTrk::MutablePersistentTrackContainer &&tc, const Acts::GeometryContext &geoContext, const EventContext &evtContext) const
produces ActsTrk::ConstTrackContainer with all backends stored in SG

Member Data Documentation

◆ m_jacobiansKey

SG::WriteHandleKey<xAOD::TrackJacobianContainer> ActsTrk::MutableTrackContainerHandlesHelper::m_jacobiansKey
private

Definition at line 67 of file TrackContainerHandlesHelper.h.

◆ m_measurementsKey

SG::WriteHandleKey<xAOD::TrackMeasurementContainer> ActsTrk::MutableTrackContainerHandlesHelper::m_measurementsKey
private

Definition at line 68 of file TrackContainerHandlesHelper.h.

◆ m_mtjKey

SG::WriteHandleKey<ActsTrk::MultiTrajectory> ActsTrk::MutableTrackContainerHandlesHelper::m_mtjKey
private

Definition at line 70 of file TrackContainerHandlesHelper.h.

◆ m_parametersKey

SG::WriteHandleKey<xAOD::TrackParametersContainer> ActsTrk::MutableTrackContainerHandlesHelper::m_parametersKey
private

Definition at line 66 of file TrackContainerHandlesHelper.h.

◆ m_statesKey

SG::WriteHandleKey<xAOD::TrackStateContainer> ActsTrk::MutableTrackContainerHandlesHelper::m_statesKey
private

Definition at line 65 of file TrackContainerHandlesHelper.h.

◆ m_surfacesKey

SG::WriteHandleKey<xAOD::TrackSurfaceContainer> ActsTrk::MutableTrackContainerHandlesHelper::m_surfacesKey
private

Definition at line 69 of file TrackContainerHandlesHelper.h.

◆ m_trackSummaryKey

SG::WriteHandleKey<ActsTrk::TrackSummaryContainer> ActsTrk::MutableTrackContainerHandlesHelper::m_trackSummaryKey
private

Definition at line 82 of file TrackContainerHandlesHelper.h.

◆ m_trackSurfacesKey

SG::WriteHandleKey<xAOD::TrackSurfaceContainer> ActsTrk::MutableTrackContainerHandlesHelper::m_trackSurfacesKey
private

Definition at line 81 of file TrackContainerHandlesHelper.h.

◆ m_xAODTrackSummaryKey

SG::WriteHandleKey<xAOD::TrackSummaryContainer> ActsTrk::MutableTrackContainerHandlesHelper::m_xAODTrackSummaryKey
private

Definition at line 80 of file TrackContainerHandlesHelper.h.


The documentation for this class was generated from the following files: