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::PersistentTrackContainer > moveToConst (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::MultiTrajectory > moveToConst (ActsTrk::MutableMultiTrajectory &&mmtj, const EventContext &context) const
 helper to record MTJ

Private Attributes

SG::WriteHandleKey< xAOD::TrackStateContainer > m_statesKey
SG::WriteHandleKey< xAOD::TrackParametersContainer > m_parametersKey
SG::WriteHandleKey< xAOD::TrackJacobianContainer > m_jacobiansKey
SG::WriteHandleKey< xAOD::TrackMeasurementContainer > m_measurementsKey
SG::WriteHandleKey< xAOD::TrackSurfaceContainer > m_surfacesKey
SG::WriteHandleKey< ActsTrk::MultiTrajectory > m_mtjKey
SG::WriteHandleKey< xAOD::TrackSummaryContainer > m_xAODTrackSummaryKey
SG::WriteHandleKey< xAOD::TrackSurfaceContainer > m_trackSurfacesKey
SG::WriteHandleKey< ActsTrk::TrackSummaryContainer > m_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 46 of file TrackContainerHandlesHelper.cxx.

47 {
48 m_statesKey = prefix + "TrackStates";
49 m_parametersKey = prefix + "TrackParameters";
50 m_jacobiansKey = prefix + "TrackJacobians";
51 m_measurementsKey = prefix + "TrackMeasurements";
52 m_surfacesKey = prefix + "TrackStateSurfaces";
53 m_mtjKey =
54 prefix + "MultiTrajectory"; // identical names, underlying types are distinct
61
62 // Track Container backends
63 m_xAODTrackSummaryKey = prefix + "TrackSummary";
64 m_trackSurfacesKey = prefix + "TrackSurfaces";
66 prefix +
67 "TrackSummary"; // identical names, underlying types are distinct
68
72 return StatusCode::SUCCESS;
73}
#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 76 of file TrackContainerHandlesHelper.cxx.

77 {
78
79 mmtj.trim();
80
81 auto statesBackendHandle = SG::makeHandle(m_statesKey, evtContext);
82 auto statesInterface =
84 mmtj.trackStatesAux());
85 RECORD_xAOD(m_statesKey, statesInterface, mmtj.m_trackStatesAux, evtContext);
86
87 auto parametersInterface =
89 mmtj.trackParametersAux());
90 RECORD_xAOD(m_parametersKey, parametersInterface, mmtj.m_trackParametersAux, evtContext);
91
92 auto jacobiansInterface =
94 mmtj.trackJacobiansAux());
95 RECORD_xAOD(m_jacobiansKey, jacobiansInterface, mmtj.m_trackJacobiansAux, evtContext);
96
97 auto measurementsInterface =
100 RECORD_xAOD(m_measurementsKey, measurementsInterface, mmtj.m_trackMeasurementsAux, evtContext);
101
102 auto surfacesBackendHandle = SG::makeHandle(m_surfacesKey, evtContext);
104
105 // construct const MTJ version
106 auto cmtj = std::make_unique<ActsTrk::MultiTrajectory>(
107 DataLink<xAOD::TrackStateAuxContainer>(m_statesKey.key() + "Aux.",
108 evtContext),
109 DataLink<xAOD::TrackParametersAuxContainer>(
110 m_parametersKey.key() + "Aux.", evtContext),
111 DataLink<xAOD::TrackJacobianAuxContainer>(
112 m_jacobiansKey.key() + "Aux.", evtContext),
113 DataLink<xAOD::TrackMeasurementAuxContainer>(
114 m_measurementsKey.key() + "Aux.", evtContext),
115 DataLink<xAOD::TrackSurfaceAuxContainer>(
116 m_surfacesKey.key() + "Aux.", evtContext)
117 );
118 cmtj->moveSurfaces(&mmtj);
119 cmtj->moveLinks(&mmtj);
120
121 return cmtj;
122}
#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 125 of file TrackContainerHandlesHelper.cxx.

126 {
127
128
129 std::unique_ptr<ActsTrk::MultiTrajectory> constMtj =
130 moveToConst(std::move(tc.trackStateContainer()), evtContext);
131
132 auto constMtjHandle = SG::makeHandle(m_mtjKey, evtContext);
133 if (constMtjHandle.record(std::move(constMtj)).isFailure()) {
134 throw std::runtime_error(
135 "MutableTrackContainerHandlesHelper::moveToConst, can't record "
136 "ConstMultiTrajectory");
137 }
138
139 auto trackSurfacesAux = std::make_unique<xAOD::TrackSurfaceAuxContainer>();
140 tc.container().encodeSurfaces(trackSurfacesAux.get(), geoContext);
141
142 auto interfaceTrackSummaryContainer =
144 tc.container().m_mutableTrackBackendAux.get());
145 RECORD_xAOD(m_xAODTrackSummaryKey, interfaceTrackSummaryContainer, tc.container().m_mutableTrackBackendAux, evtContext);
146
148 trackSurfacesAux.get());
149 RECORD_xAOD(m_trackSurfacesKey, trackSurfaces, trackSurfacesAux, evtContext);
150
151 auto constTrackSummary = std::make_unique<ActsTrk::TrackSummaryContainer>(
152 DataLink<xAOD::TrackSummaryContainer>(m_xAODTrackSummaryKey.key(),
153 evtContext));
154 constTrackSummary->restoreDecorations();
155 constTrackSummary->fillFrom(tc.container());
156
157 auto constTrackSummaryHandle = SG::makeHandle(m_trackSummaryKey, evtContext);
158 if (constTrackSummaryHandle.record(std::move(constTrackSummary))
159 .isFailure()) {
160 throw std::runtime_error(
161 "MutableTrackContainerHandlesHelper::moveToConst, can't record "
162 "TrackSummary");
163 }
164 auto constTrack = std::make_unique<ActsTrk::PersistentTrackContainer>(
165 DataLink<ActsTrk::TrackSummaryContainer>(m_trackSummaryKey.key(),
166 evtContext),
167 DataLink<ActsTrk::MultiTrajectory>(m_mtjKey.key(), evtContext));
168 return constTrack;
169}
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: