Loading [MathJax]/extensions/tex2jax.js
|
ATLAS Offline Software
|
Go to the documentation of this file.
4 #ifndef ActsEvent_MultiTrajectory_h
5 #define ActsEvent_MultiTrajectory_h
11 #include "Acts/EventData/MultiTrajectory.hpp"
12 #include "Acts/EventData/SourceLink.hpp"
13 #include "Acts/EventData/TrackStatePropMask.hpp"
14 #include "Acts/EventData/VectorMultiTrajectory.hpp"
15 #include "Acts/Utilities/HashedString.hpp"
16 #include "Acts/Geometry/TrackingGeometry.hpp"
18 #include "Acts/Surfaces/Surface.hpp"
30 inline std::string_view name_only(
const char*
s) {
31 return std::string_view(
s+std::string_view(
s).rfind(
'/'));
33 #define INSPECTCALL(_INFO) {std::cout << name_only(__FILE__) <<":"<<__LINE__<<" "<<__PRETTY_FUNCTION__<<" "<<_INFO<<std::endl; }
35 #define INSPECTCALL(_INFO)
40 class MutableMultiTrajectory;
41 class MultiTrajectory;
42 class MutableTrackContainerHandlesHelper;
69 using StoredSurface = std::variant<const Acts::Surface*, std::shared_ptr<const Acts::Surface>>;
81 :
public Acts::MultiTrajectory<ActsTrk::MutableMultiTrajectory> {
114 Acts::TrackStatePropMask
mask);
153 template <
typename T>
173 Acts::TrackStatePropMask shareSource,
174 Acts::TrackStatePropMask shareTarget);
248 template <std::
size_t measdim>
255 template <std::
size_t measdim,
bool Enable = true>
256 std::enable_if_t<Enable,
270 template <std::
size_t measdim>
276 template <std::
size_t measdim,
bool Enable = true>
309 template <
typename val_t,
typename cov_t>
310 void allocateCalibrated_impl(
IndexType istate,
311 const Eigen::DenseBase<val_t>&
val,
312 const Eigen::DenseBase<cov_t>&
cov)
313 requires(Eigen::PlainObjectBase<val_t>::RowsAtCompileTime > 0 &&
314 Eigen::PlainObjectBase<val_t>::RowsAtCompileTime <= Acts::eBoundSize &&
315 Eigen::PlainObjectBase<val_t>::RowsAtCompileTime ==
316 Eigen::PlainObjectBase<cov_t>::RowsAtCompileTime &&
317 Eigen::PlainObjectBase<cov_t>::RowsAtCompileTime ==
318 Eigen::PlainObjectBase<cov_t>::ColsAtCompileTime);
329 const Acts::SourceLink& sourceLink);
338 std::shared_ptr<const Acts::Surface>);
414 :
public Acts::MultiTrajectory<MultiTrajectory> {
446 template <std::
size_t measdim>
453 template <std::
size_t measdim>
470 void fillSurfaces(
const Acts::TrackingGeometry*
geo,
const Acts::GeometryContext& geoContext );
506 template<
typename IFACE,
typename AUX>
509 for (
size_t i = 0,
sz = aux->size();
i <
sz; ++
i) {
510 interface->emplace_back(
new std::remove_pointer_t<typename IFACE::value_type>() );
512 interface->setStore(aux);
527 #include "Acts/EventData/VectorTrackContainer.hpp"
528 CLASS_DEF(Acts::ConstVectorTrackContainer, 1074811884, 1)
bool has_impl(Acts::HashedString key, ActsTrk::IndexType istate) const
std::vector< StoredSurface > m_surfaces
size_t m_trackJacobiansSize
typename Acts::MultiTrajectory< ActsTrk::MutableMultiTrajectory >::TrackStateProxy TrackStateProxy
xAOD::TrackJacobianAuxContainer * trackJacobiansAux()
std::vector< StoredSurface > m_surfaces
std::any component_impl(Acts::HashedString key, ActsTrk::IndexType istate) const
Access component by key.
AmgVector(toInt(ParamDefs::nPars)) Parameters
void setUncalibratedSourceLink_impl(ActsTrk::IndexType istate, const Acts::SourceLink &sourceLink)
Implementation of uncalibrated link insertion.
std::variant< const Acts::Surface *, std::shared_ptr< const Acts::Surface > > StoredSurface
ConstTrackStateProxy::Parameters parameters_impl(ActsTrk::IndexType index) const
obtains proxy to the track state under given index
std::vector< ActsTrk::detail::Decoration > m_decorations
ConstTrackStateProxy::Covariance covariance_impl(ActsTrk::IndexType index) const
obtain covariances for a state at given index
TrackStateProxy::Covariance jacobian_impl(ActsTrk::IndexType istate)
const Acts::Surface * referenceSurface_impl(IndexType) const
std::unique_ptr< xAOD::TrackParametersAuxContainer > m_trackParametersAux
std::any component_impl(Acts::HashedString key, ActsTrk::IndexType istate) const
std::unique_ptr< IFACE > makeInterfaceContainer(const AUX *aux)
helper to construct interface container for already filled Aux container TODO maybe should be moved t...
ConstTrackStateProxy::Covariance trackMeasurementsCov(ActsTrk::IndexType index) const
obtain measurement covariances for a state at given index
Read only version of MTJ The implementation is separate as the details are significantly different an...
const DataLink< xAOD::TrackMeasurementAuxContainer > m_trackMeasurementsAux
Acts::TrackIndexType size_impl() const
size of the MTJ
ActsTrk::IndexType addTrackState_impl(Acts::TrackStatePropMask mask, ActsTrk::IndexType iprevious)
Add state with stograge for data that depends on the mask.
std::vector< Acts::HashedString > dynamicKeys_impl() const
Acts::TrackIndexType size_impl() const
bool hasColumn_impl(Acts::HashedString key) const
TrackStateProxy::Parameters parameters_impl(ActsTrk::IndexType index)
xAOD::TrackMeasurementAuxContainer * trackMeasurementsAux()
bool has_backends() const
checks if the backends are connected (i.e.
std::vector< std::optional< Acts::SourceLink > > m_calibratedSourceLinks
std::vector< std::optional< Acts::SourceLink > > m_calibratedSourceLinks
Athena implementation of ACTS::MultiTrajectory (ReadWrite version) The data is stored in 4 external b...
bool has_impl(Acts::HashedString key, ActsTrk::IndexType istate) const
checks if given state has requested component
const xAOD::TrackParametersAuxContainer * trackParametersAux() const
std::vector< Acts::HashedString > dynamicKeys_impl() const
std::unique_ptr< xAOD::TrackMeasurementAuxContainer > m_trackMeasurementsAux
static const std::set< std::string > s_staticVariables
MultiTrajectory(DataLink< xAOD::TrackStateAuxContainer > trackStates, DataLink< xAOD::TrackParametersAuxContainer > trackParameters, DataLink< xAOD::TrackJacobianAuxContainer > trackJacobians, DataLink< xAOD::TrackMeasurementAuxContainer > trackMeasurements, DataLink< xAOD::TrackSurfaceAuxContainer > trackSurfaces)
ActsTrk::IndexType calibratedSize_impl(ActsTrk::IndexType istate) const
std::vector< std::optional< Acts::SourceLink > > m_uncalibratedSourceLinks
TrackStateProxy::Covariance trackMeasurementsCov(ActsTrk::IndexType index)
ConstTrackStateProxy::template CalibratedCovariance< measdim > calibratedCovariance_impl(ActsTrk::IndexType index) const
obtain measurements covariance for a state at given index
const Acts::Surface * referenceSurface_impl(IndexType) const
const DataLink< xAOD::TrackSurfaceAuxContainer > m_trackSurfacesAux
std::vector< std::optional< Acts::SourceLink > > m_uncalibratedSourceLinks
Object reference supporting deferred reading from StoreGate.
void addTrackStateComponents_impl(ActsTrk::IndexType istate, Acts::TrackStatePropMask mask)
Add state components for the given mask.
std::unique_ptr< xAOD::TrackSurfaceAuxContainer > m_surfacesBackendAux
MutableMultiTrajectory(ActsTrk::MutableMultiTrajectory &&other)=default
typename Acts::MultiTrajectory< ActsTrk::MutableMultiTrajectory >::ConstTrackStateProxy ConstTrackStateProxy
void shareFrom_impl(ActsTrk::IndexType iself, ActsTrk::IndexType iother, Acts::TrackStatePropMask shareSource, Acts::TrackStatePropMask shareTarget)
shares from a given state
const DataLink< xAOD::TrackParametersAuxContainer > m_trackParametersAux
std::vector< ActsTrk::detail::Decoration > m_decorations
std::enable_if_t< Enable, typename TrackStateProxy::template Calibrated< measdim > > calibrated_impl(ActsTrk::IndexType index)
void copyDynamicFrom_impl(ActsTrk::IndexType, Acts::HashedString, const std::any &)
Acts::SourceLink getUncalibratedSourceLink_impl(ActsTrk::IndexType istate) const
Implementation of uncalibrated link fetch.
Include the GeoPrimitives which need to be put first.
const DataLink< xAOD::TrackStateAuxContainer > m_trackStatesAux
uint32_t TrackStateIndexType
MutableMultiTrajectory()
Construct a new Multi Trajectory object owning backends.
void moveLinks(const ActsTrk::MutableMultiTrajectory *mtj)
TrackStateProxy::Covariance covariance_impl(ActsTrk::IndexType index)
MutableMultiTrajectory & operator=(const ActsTrk::MutableMultiTrajectory &other)=delete
Acts::SourceLink getUncalibratedSourceLink_impl(ActsTrk::IndexType istate) const
std::unique_ptr< xAOD::TrackStateAuxContainer > m_trackStatesAux
constexpr bool hasColumn_impl(Acts::HashedString key) const
checks if MTJ has requested column (irrespectively of the state)
ConstTrackStateProxy::template CalibratedCovariance< measdim > calibratedCovariance_impl(IndexType index) const
ConstTrackStateProxy::Parameters parameters_impl(ActsTrk::IndexType index) const
xAOD::TrackSurfaceAuxContainer * trackSurfacesAux()
Compatibility helpers for using some pieces of C++20 concepts with older compilers.
void fillSurfaces(const Acts::TrackingGeometry *geo, const Acts::GeometryContext &geoContext)
Fill surfaces either from persistency or from geometry If the surfaces are already there it means tha...
size_t m_trackMeasurementsSize
std::unique_ptr< xAOD::TrackSurfaceContainer > m_surfacesBackend
AmgSymMatrix(toInt(ParamDefs::nPars)) Covariance
xAOD::TrackStateAuxContainer * trackStatesAux()
std::enable_if_t< Enable, typename TrackStateProxy::template CalibratedCovariance< measdim > > calibratedCovariance_impl(ActsTrk::IndexType index)
void addColumn_impl(std::string_view key)
enables particular decoration, type & name need to be specified
void allocateCalibrated_impl(IndexType istate, const Eigen::DenseBase< val_t > &val, const Eigen::DenseBase< cov_t > &cov) requires(Eigen ActsTrk::IndexType calibratedSize_impl(ActsTrk::IndexType istate) const
Implementation of allocation of calibrated measurements.
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
ActsGeometryContext m_geoContext
std::unique_ptr< xAOD::TrackJacobianAuxContainer > m_trackJacobiansAux
void setReferenceSurface_impl(IndexType, std::shared_ptr< const Acts::Surface >)
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
xAOD::TrackParametersAuxContainer * trackParametersAux()
void moveSurfaces(const ActsTrk::MutableMultiTrajectory *mtj)
reuse surfaces from MutableMultiTrajectory
ConstTrackStateProxy::template Calibrated< measdim > calibrated_impl(ActsTrk::IndexType index) const
obtain calibrated measurements for a state at given index
ConstTrackStateProxy::Covariance jacobian_impl(ActsTrk::IndexType istate) const
obtain jacobian for a state at given index
ConstTrackStateProxy::Covariance covariance_impl(ActsTrk::IndexType index) const
macros to associate a CLID to a type
void clear_impl()
clears backends decoration columns are still declared
const DataLink< xAOD::TrackJacobianAuxContainer > m_trackJacobiansAux
size_t m_trackParametersSize
ConstTrackStateProxy::Covariance jacobian_impl(ActsTrk::IndexType istate) const
ConstTrackStateProxy::template Calibrated< measdim > calibrated_impl(IndexType istate) const
void unset_impl(Acts::TrackStatePropMask target, ActsTrk::IndexType istate)
unsets a given state