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 47 of file TrackContainerHandlesHelper.cxx.

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

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

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