Namespace Acts::Experimental
-
namespace Experimental
Typedefs
-
using DetectorBlock = std::tuple<DetectorVolumes, ProtoContainer>
Current block (volumes and shell)
-
using DetectorBlockBuilder = std::function<void(DetectorBlock&, const GeometryContext&, Acts::Logging::Level)>
The detector builder function.
-
using DetectorVolumes = std::vector<std::shared_ptr<DetectorVolume>>
Current volumes (connected)
-
using DetectorVolumeUpdator = OwningDelegate<void(const GeometryContext &gctx, NavigationState &nState), INavigationDelegate>
Declare a Detctor Volume finding or switching delegate.
- Param gctx
is the current geometry context
- Param nState
[in, out] is the navigation state to be updated
- Return
the new DetectorVolume into which one changes at this switch
-
template<typename grid_type>
using IndexedDetectorVolumeImpl = IndexedUpdatorImpl<grid_type, IndexedDetectorVolumeExtractor, DetectorVolumeFiller> An indexed volume implementation access.
- Template Parameters
grid_type – is the grid type used for this
-
template<typename grid_type, template<typename> class indexed_updator>
using IndexedSurfacesAllPortalsImpl = ChainedUpdatorImpl<AllPortalsImpl, indexed_updator<grid_type>> An indexed surface implementation with portal access.
- Template Parameters
inexed_updator – is the updator for the indexed surfaces
-
template<typename grid_type>
using IndexedSurfacesImpl = IndexedUpdatorImpl<grid_type, IndexedSurfacesExtractor, SurfacesFiller> An indexed surface implementation access.
- Template Parameters
grid_type – is the grid type used for this indexed lookup
-
template<typename grid_type>
using MultiLayerSurfacesImpl = MultiLayerSurfacesUpdatorImpl<grid_type, PathGridSurfacesGenerator> An indexed multi layer surface implementation access.
- Template Parameters
grid_type – is the grid type used for this indexed lookup
-
using PortalGenerator = Delegate<std::vector<std::shared_ptr<Portal>>(const Transform3&, const VolumeBounds&, const std::shared_ptr<DetectorVolume>&)>
The Portal generator definition.
-
using ProtoContainer = std::map<unsigned int, std::shared_ptr<Portal>>
Current shell (i.e. outside portals)
-
using SingleIndex = std::size_t
-
using SurfaceCandidatesUpdator = OwningDelegate<void(const GeometryContext &gctx, NavigationState &nState), INavigationDelegate>
Declare an updator for the local navigation, i.e.
the navigation inside a detector volume. This can be called either directly after a volume switch or in order to update within a volume after some progression
This delegate dispatches the local navigation action to a dedicated struct or function that is optimised for the given environment.
Note
it relies on the detector volume to be set to the state Memory managed navigation state updator
- Param gctx
is the current geometry context
- Param nState
[in,out] is the navigation state to be updated
-
using VariableBoundAxis = Acts::detail::Axis<Acts::detail::AxisType::Variable, Acts::detail::AxisBoundaryType::Bound>
-
using VariableBoundIndexGrid1 = Acts::detail::Grid<SingleIndex, VariableBoundAxis>
Enums
-
enum class GlobalChiSquareFitterError
Values:
-
enumerator DetAIsZero
-
enumerator DetAIsZero
Functions
-
template<size_t measDim, typename traj_t>
void collector(typename traj_t::TrackStateProxy &trackStateProxy, Gx2FitterResult<traj_t> &result, const Logger &logger) Collector for the GX2F Actor The collector prepares each measurement for the actual fitting process.
Each n-dimensional measurement is split into n 1-dimensional linearly independent measurements. Then the collector saves the following information:
Residual: Calculated from measurement and prediction
Covariance: The covariance of the measurement
Projected Jacobian: This implicitly contains the measurement type It also checks if the covariance is above a threshold, to detect and avoid too small covariances for a stable fit.
- Template Parameters
measDim – Number of dimensions of the measurement
traj_t – The trajectory type
- Parameters
trackStateProxy – is the current track state
result – is the mutable result/cache object
logger – a logger instance
-
PortalGenerator defaultPortalAndSubPortalGenerator()
Create a default portal generator that connects to the static method.
Note
parameters are ignored in this case
-
PortalGenerator defaultPortalGenerator()
Create a default portal generator that connects to the static method.
Generator function for creation of portal surfaces.
- Parameters
dTransform – a contextually resolved transform
dBounds – the detecor volume bounds
dVolume – the reference to the detector volume which generates this volume
- Returns
a vector of newly created portals with registered inside volume
Calls the portal generation and adds registration to sub portals.
This code is split off the PortalGenerator code in order to allow unit testing of the portal generation without detector volume construction
- Parameters
dTransform – a contextually resolved transform
dBounds – the detecor volume bounds
dVolume – the reference to the detector volume which generates this volume
- Returns
a vector of newly created portals with registered inside volume
-
std::error_code make_error_code(Acts::Experimental::GlobalChiSquareFitterError e)
-
static inline SurfaceCandidatesUpdator tryAllPortals()
Generate a provider for all portals.
- Returns
a connected navigationstate updator
-
static inline SurfaceCandidatesUpdator tryAllPortalsAndSurfaces()
Generate a provider for all portals and Surfacess.
Note
this is a try-and error navigation, not recommended for production setup with many surfaces
- Returns
a connected navigationstate updator
-
static inline DetectorVolumeUpdator tryAllSubVolumes()
Generate a delegate to try all sub volumes.
-
static inline DetectorVolumeUpdator tryNoVolumes()
Generate a delegate to try no volume.
-
static inline DetectorVolumeUpdator tryRootVolumes()
Generate a delegate to try the root volumes.
-
static inline DetectorVolumeUpdator unconnectedUpdator()
A dummy constructed updator.
Helper method to update the candidates (portals/surfaces), this can be called for initial surface/portal estimation, but also during the navigation to update the current list of candidates.
- Parameters
gctx – is the Geometry context of this call
nState – [in,out] is the navigation state to be updated
-
struct AdditionalSurfacesImpl : public Acts::Experimental::INavigationDelegate
- #include <Acts/Navigation/SurfaceCandidatesUpdators.hpp>
This holds and extracts a collection of surfaces without much checking, this could be e.g.
support surfaces for layer structures, e.g.
Public Functions
Extract the sub volumes from the volume.
- Parameters
gctx – the geometry contextfor this extraction call (ignored)
nState – is the navigation state
Public Members
-
std::vector<const Surface*> surfaces = {}
The volumes held by this collection.
-
struct AllPortalsAndSurfacesImpl : public Acts::Experimental::INavigationDelegate
- #include <Acts/Navigation/SurfaceCandidatesUpdators.hpp>
Public Functions
An ordered list of portals and surfaces provider.
Note
that the intersections are ordered, such that the smallest intersection pathlength >= overstep tolerance is the lowest
- Parameters
gctx – is the Geometry context of this call
nState – is the navigation state to be updated
- Returns
an ordered list of portal and surface candidates
-
struct AllPortalsExtractor
- #include <Acts/Detector/DetectorVolume.hpp>
Helper extractors: all portals.
Public Static Functions
Extract the portals from the volume.
- Parameters
gctx – the geometry contextfor this extraction call
nState – is the current navigation state
- Returns
a vector of raw Portal pointers
-
struct AllPortalsImpl : public Acts::Experimental::INavigationDelegate
- #include <Acts/Navigation/SurfaceCandidatesUpdators.hpp>
Public Functions
A ordered portal provider.
Note
that the intersections are ordered, such that the smallest intersection pathlength >= overstep tolerance is the lowest
- Parameters
gctx – is the Geometry context of this call
nState – is the navigation state to be updated
- Returns
an ordered list of portal candidates
-
struct AllSubVolumesExtractor
- #include <Acts/Detector/DetectorVolume.hpp>
Helper extractors: all sub volumes of a volume.
Public Static Functions
Extract the sub volumes from the volume.
- Parameters
gctx – the geometry contextfor this extraction call
nState – is the current navigation state
indices – are access indices into the volume store (ignored)
- Returns
a vector of raw DetectorVolume pointers
-
struct AllSurfacesExtractor
- #include <Acts/Detector/DetectorVolume.hpp>
Helper extractors: all surfaces.
Public Static Functions
Extract the surfaces from the volume.
- Parameters
gctx – the geometry contextfor this extraction call
nState – is the current navigation state
indices – is an ignored index vector
- Returns
a vector of raw Surface pointers
-
struct BoundVolumesGrid1Impl : public Acts::Experimental::INavigationDelegate
- #include <Acts/Navigation/DetectorVolumeUpdators.hpp>
This is used for volumes that are indexed in a bound 1-dimensional grid, e.g.
a z-spaced array, or an r-spaced array of volumes.
Public Types
-
using IndexedUpdator = IndexedUpdatorImpl<VariableBoundIndexGrid1, DetectorVolumesCollection, DetectorVolumeFiller>
Public Functions
-
BoundVolumesGrid1Impl() = delete
-
inline BoundVolumesGrid1Impl(const std::vector<ActsScalar> &gBoundaries, BinningValue bValue, const std::vector<const DetectorVolume*> &cVolumes, const Transform3 &bTransform = Transform3::Identity()) noexcept(false)
Allowed constructor with explicit arguments.
- Parameters
gBoundaries – the grid boundaries
bValue – the binning value
cVolumes – the contained volumes
bTransform – is the optional transform
This updator relies on an 1D single index grid.
- Parameters
gctx – the geometry context
nState – [in,out] the navigation state to be updated
Public Members
-
IndexedUpdator indexedUpdator
-
using IndexedUpdator = IndexedUpdatorImpl<VariableBoundIndexGrid1, DetectorVolumesCollection, DetectorVolumeFiller>
-
template<typename ...updators_t>
class ChainedUpdatorImpl : public Acts::Experimental::INavigationDelegate - #include <Acts/Navigation/NavigationStateUpdators.hpp>
This is a chained extractor/filler implementation Since there is no control whether it is a static or payload extractor, these have to be provided by a tuple.
- Template Parameters
updators_t – the updators that will be called in sequence
Public Functions
-
inline ChainedUpdatorImpl(const std::tuple<updators_t...> &&upts)
Constructor for chained updators in a tuple, this will unroll the tuple and call them in sequence.
- Parameters
upts – the updators to be called in chain
A combined navigation state updator w/o intersection specifics.
- Parameters
gctx – is the Geometry context of this call
nState – the navigation state to which the objects are attached
Public Members
-
std::tuple<updators_t...> updators
The stored updators.
-
class CylindricalContainerBuilder : public Acts::Experimental::IDetectorComponentBuilder
- #include <Acts/Detector/CylindricalContainerBuilder.hpp>
A dedicated container builder for cylindrical detector containers.
It relies on the detailed implementation of the CylindricalDetectorHelper and allows for DetectorVolume attachment in z/r/phi, such as wrapping of bevelled cylinder objects in z/r
Note
the builder expects a fully consistent set of sub volume builders that will be executed in a chain
Note
allowed BinningValue(s) for the cylindrical container builder are {binZ}, {binR}, {binPhi}, {binZ, binR}, whereas the last option indicates a wrapping setup.
Public Functions
-
CylindricalContainerBuilder(const Config &cfg, std::unique_ptr<const Logger> logger = getDefaultLogger("CylindricalContainerBuilder", Logging::INFO))
Constructor with configuration arguments.
- Parameters
cfg – is the configuration struct
logger – logging instance for screen output
-
virtual DetectorComponent construct(const GeometryContext &gctx) const final
The final implementation of the cylindrical container builder.
- Parameters
gctx – The geometry context for this call
- Returns
an outgoing detector component
-
struct Config
- #include <Acts/Detector/CylindricalContainerBuilder.hpp>
Nested configuration object.
Public Members
-
std::string auxiliary = ""
Auxiliary information, mainly for screen output.
-
std::vector<BinningValue> binning = {}
Binning prescription of attachment.
-
std::vector<std::shared_ptr<const IDetectorComponentBuilder>> builders = {}
The configured volume builders.
-
std::shared_ptr<const IGeometryIdGenerator> geoIdGenerator = nullptr
The geometry id generator.
-
bool geoIdReverseGen = false
An eventual reverse geometry id generation.
-
std::shared_ptr<IRootVolumeFinderBuilder> rootVolumeFinderBuilder = nullptr
The root volume finder.
-
std::string auxiliary = ""
-
CylindricalContainerBuilder(const Config &cfg, std::unique_ptr<const Logger> logger = getDefaultLogger("CylindricalContainerBuilder", Logging::INFO))
-
class Detector : public std::enable_shared_from_this<Detector>
- #include <Acts/Detector/Detector.hpp>
Public Functions
-
const DetectorVolumeUpdator &detectorVolumeFinder() const
Const access to the volume finder.
-
const DetectorVolume *findDetectorVolume(const GeometryContext &gctx, const Vector3 &position) const
Find a volume from a position.
Note
this creates internally a NavigationState object
- Parameters
gctx – is the Geometry context of the call
position – is the position of the call
- Returns
the volume pointer or nullptr (if outside)
-
const DetectorVolume *findDetectorVolume(const std::string &name) const
Find a volume by name.
- Parameters
name – with which the volume is searched for
- Returns
the volume pointer or nullptr (if not found)
Retrieve a
std::shared_ptr
for this surface (non-const version)Note
Will error if this was not created through the
makeShared
factory since it needs access to the original reference. In C++14 this is undefined behavior (but most likely implemented as abad_weak_ptr
exception), in C++17 it is defined as that exception.Note
Only call this if you need shared ownership of this object.
- Returns
The shared pointer
Retrieve a
std::shared_ptr
for this surface (const version)Note
Will error if this was not created through the
makeShared
factory since it needs access to the original reference. In C++14 this is undefined behavior, but most likely implemented as abad_weak_ptr
exception, in C++17 it is defined as that exception.Note
Only call this if you need shared ownership of this object.
- Returns
The shared pointer
-
const std::string &name() const
Return the name of the detector.
-
std::vector<std::shared_ptr<DetectorVolume>> &rootVolumePtrs()
Non-const access to the root volumes.
- Returns
the root volume shared pointer
-
const std::vector<const DetectorVolume*> &rootVolumes() const
Const access to the root volumes.
- Returns
a vector to const DetectorVolume raw pointers
-
const GeometryHierarchyMap<const Surface*> &sensitiveHierarchyMap() const
Const access to the hierarchy map of all sensitive surfaces.
- Returns
the map which can be queried with GeometryID for ranges
Update the current volume of a given navigation state.
- Parameters
gctx – is the Geometry context of the call
nState – [in, out] is the navigation state
-
void updateDetectorVolumeFinder(DetectorVolumeUpdator detectorVolumeUpdator)
Update the volume finder.
- Parameters
detectorVolumeUpdator – the new volume finder
-
std::vector<std::shared_ptr<DetectorVolume>> &volumePtrs()
Non-const access to the root volume.
- Returns
the volumes shared pointer store
-
const std::vector<const DetectorVolume*> &volumes() const
Const access to sub volumes.
- Returns
a vector to const DetectorVolume raw pointers
Public Static Functions
Factory for producing memory managed instances of Detector.
-
const DetectorVolumeUpdator &detectorVolumeFinder() const
-
class DetectorBuilder : public Acts::Experimental::IDetectorBuilder
- #include <Acts/Detector/DetectorBuilder.hpp>
Standard generic Detector builder that calls the top level component builder and transfers the result into a detector object.
Note
This is the last builder in the chain and the the returned detector object is const and cannot be modified anymore.
Public Functions
-
DetectorBuilder(const Config &cfg, std::unique_ptr<const Logger> mlogger = getDefaultLogger("DetectorBuilder", Logging::INFO))
Constructor with configuration arguments.
- Parameters
cfg – is the configuration struct
mlogger – logging instance for screen output
-
virtual std::shared_ptr<const Detector> construct(const GeometryContext &gctx) const final
Final implementation of a volume builder that is purely defined by an internal and external structure builder.
- Parameters
gctx – The geometry context for this call
- Returns
an outgoing detector component
-
struct Config
- #include <Acts/Detector/DetectorBuilder.hpp>
Nested configuration object.
Public Members
-
std::string auxiliary = ""
Auxiliary information.
-
std::shared_ptr<const IDetectorComponentBuilder> builder = nullptr
An external builder.
-
std::shared_ptr<const IGeometryIdGenerator> geoIdGenerator = nullptr
A geometry id generator.
-
std::string name = "unnamed"
The name of the volume to be built.
-
std::string auxiliary = ""
-
DetectorBuilder(const Config &cfg, std::unique_ptr<const Logger> mlogger = getDefaultLogger("DetectorBuilder", Logging::INFO))
-
struct DetectorComponent
- #include <Acts/Detector/DetectorComponents.hpp>
The currently built detector components including the constructed volumes and the current shell/coating, i.e.
portals ordered in a map
Note
the map indices of the shell coating represent their respective index in the portal vector of the VolumeBounds derivative that is described by the given component.
Public Types
-
using PortalContainer = std::map<unsigned int, std::shared_ptr<Portal>>
Define a portal container.
Public Members
-
PortalContainer portals = {}
The current map of outside portals.
-
RootDetectorVolumes rootVolumes = {}
The root volumes finder.
-
std::vector<std::shared_ptr<DetectorVolume>> volumes = {}
The vector of constructed volume(s)
-
using PortalContainer = std::map<unsigned int, std::shared_ptr<Portal>>
- #include <Acts/Navigation/DetectorNavigator.hpp>
Public Functions
Constructor with configuration object.
- Parameters
cfg – The navigator configuration
_logger – a logger instance
Initialize call - start of propagation.
- Template Parameters
propagator_state_t – The state type of the propagagor
stepper_t – The type of stepper used for the propagation
- Parameters
state – [inout] is the propagation state object
stepper – [in] Stepper in use
- Returns
boolean return triggers exit to stepper
Navigator post step call.
- Template Parameters
propagator_state_t – is the type of Propagatgor state
stepper_t – is the used type of the Stepper by the Propagator
- Parameters
state – [inout] is the mutable propagator state object
stepper – [in] Stepper in use
Navigator pre step call.
This will invalid the current surface and current portal in order to navigate to the next ones.
- Template Parameters
propagator_state_t – is the type of Propagatgor state
stepper_t – is the used type of the Stepper by the Propagator
- Parameters
state – [inout] is the mutable propagator state object
stepper – [in] Stepper in use
- #include <Acts/Navigation/DetectorNavigator.hpp>
Public Members
Detector for this Navigation.
stop at every material surface (whether it is passive or not)
stop at every surface regardless what it is
Configuration for this Navigator stop at every sensitive surface (whether it has material or not)
- #include <Acts/Navigation/DetectorNavigator.hpp>
Nested State struct.
It acts as an internal state which is created for every propagation/extrapolation step and keep thread-local navigation information
Public Members
Navigation state - external state: the current surface.
Navigation state : a break has been detected.
Navigation state - external state: the start surface.
Indicator if the target is reached.
Navigation state - external state: the target surface.
-
class DetectorVolume : public std::enable_shared_from_this<DetectorVolume>
- #include <Acts/Detector/DetectorVolume.hpp>
A detector volume description which can be:
Note
A detector volume holds non-const objects internally that are allowed to be modified as long as the geometry is not yet closed. Using this, material can be attached, and GeometryIdentifier can be set at construction time.
Note
The construction of DetectorVolumes is done via a dedicated factory, this is necessary as then the shared_ptr is non-weak and it can be registered in the portal generator for further geometry processing.
Note
Navigation is always done by plain pointers, while object ownership is done by shared/unique pointers.
Public Types
-
using BoundingBox = Acts::AxisAlignedBoundingBox<Acts::Experimental::DetectorVolume, Acts::ActsScalar, 3>
Public Functions
-
void assignDetector(const Detector &detector)
Assign Detector to this volume (for back navigation issues)
- Parameters
detector – the parenting detector class
-
void assignGeometryId(const GeometryIdentifier &geoID)
Set the geometry identifier.
Note
no checking is done, it will overwrite any existing id
- Parameters
geoID – is the geometry Id that is set to the object
This method allows to udate the navigation state updator module.
- Parameters
surfaceCandidateUpdator – the new navigation state updator for surfaces
surfaces – the surfaces the new navigation state updator points to
volumes – the volumes the new navigation state updator points to
Assign the volume material description.
This method allows to load a material description during the detector geometry building, and assigning it (potentially multiple) times to detector volumes.
- Parameters
material – Material description associated to this volumw
-
Vector3 center(const GeometryContext &gctx = GeometryContext()) const
Const access to the center.
Note
the geometry context is currently ignored, but is a placeholder for eventually misaligned volumes
- Parameters
gctx – the geometry context
- Returns
a contextually created center
-
void closePortals()
Final closing of portal, i.e. this sets the end of world.
-
const Detector *detector() const
Const access to the detector.
-
const DetectorVolumeUpdator &detectorVolumeUpdator() const
Const access to the detector volume updator.
-
bool exclusivelyInside(const GeometryContext &gctx, const Vector3 &position) const
Check if a point is exclusively inside this volume i.e.
this point is not inside a subvolume.
- Parameters
gctx – the geometry context
position – the position for the inside check
- Returns
a bool to indicate inside/outside
-
Extent extent(const GeometryContext &gctx, size_t nseg = 1) const
The Extent for this volume.
- Parameters
gctx – is the geometry context
nseg – is the number of segments to approximate
- Returns
an Extent object
-
const GeometryIdentifier &geometryId() const
- Returns
the geometry identifier
-
const BoundingBox &getBoundingBox() const
Retrieve a
std::shared_ptr
for this surface (non-const version)Note
Will error if this was not created through the
makeShared
factory since it needs access to the original reference. In C++14 this is undefined behavior (but most likely implemented as abad_weak_ptr
exception), in C++17 it is defined as that exception.Note
Only call this if you need shared ownership of this object.
- Returns
The shared pointer
Retrieve a
std::shared_ptr
for this surface (const version)Note
Will error if this was not created through the
makeShared
factory since it needs access to the original reference. In C++14 this is undefined behavior, but most likely implemented as abad_weak_ptr
exception, in C++17 it is defined as that exception.Note
Only call this if you need shared ownership of this object.
- Returns
The shared pointer
-
bool inside(const GeometryContext &gctx, const Vector3 &position) const
Check if a point is inside this volume.
Subvolumes will not be checked.
- Parameters
gctx – the geometry context
position – the position for the inside check
- Returns
a bool to indicate inside/outside
-
const std::string &name() const
- Returns
the name of the volume
-
std::vector<std::shared_ptr<Portal>> &portalPtrs()
Non-const access to the portals.
- Returns
the portal shared pointer store
-
const std::vector<const Portal*> &portals() const
Const access to the detector portals.
Note
an empty vector indicates a container volume that has not been properly connected
- Returns
a vector to const Portal raw pointers
-
const SurfaceCandidatesUpdator &surfaceCandidatesUpdator() const
Const access to the navigation state updator.
-
std::vector<std::shared_ptr<Surface>> &surfacePtrs()
Non-const access to the surfaces.
- Returns
the surfaces shared pointer store
-
const std::vector<const Surface*> &surfaces() const
Const access to the surfaces.
Note
an empty vector indicates either gap volume or container volume, a non-empty vector indicates a layer volume.
- Returns
a vector to const Surface raw pointers
-
const Transform3 &transform(const GeometryContext &gctx = GeometryContext()) const
Const access to the transform.
Note
the geometry context is currently ignored, but is a placeholder for eventually misaligned volumes
- Parameters
gctx – the geometry context
- Returns
const reference to the contextual transform
Initialize/update the navigation status in this environment.
This method calls:
the local navigation delegate for candidate surfaces
the portal navigation delegate for candidate exit portals
set the current detector volume
- Parameters
gctx – is the current geometry context
nState – [in,out] is the detector navigation state to be updated
Update a portal given a portal index.
Note
throws exception if portal index out of bounds
- Parameters
portal – the portal to be updated
pIndex – the portal index
-
const VolumeBounds &volumeBounds() const
Const access to the volume bounds.
- Returns
const reference to the volume bounds object
-
const IVolumeMaterial *volumeMaterial() const
Const access to the volume amterial.
-
std::shared_ptr<IVolumeMaterial> volumeMaterialPtr()
Non-const access to the voume material (for scaling, e.g.)
-
std::vector<std::shared_ptr<DetectorVolume>> &volumePtrs()
Non-const access to the volumes.
- Returns
the volumes shared pointer store
-
const std::vector<const DetectorVolume*> &volumes() const
Const access to sub volumes.
Note
and empty vector indicates this is either a gap volume or a layer volume, in any case it means the volume is on navigation level and the portals need to be connected
- Returns
a vector to const DetectorVolume raw pointers
Friends
- friend class DetectorVolumeFactory
-
template<typename internal_type>
struct ObjectStore - #include <Acts/Detector/DetectorVolume.hpp>
Nested object store that holds the internal (non-const), reference counted objects and provides an external (const raw pointer) access.
- Template Parameters
internal_type – is the internal storage representation, has to comply with std::shared_ptr semantics
Public Functions
-
ObjectStore() = default
-
inline ObjectStore(std::vector<internal_type> objects)
Store constructor.
- Parameters
objects – are the ones copied into the internal store
Public Members
-
std::vector<const typename internal_type::element_type*> external = {}
The external storage vector, const raw pointer.
-
std::vector<internal_type> internal = {}
The internal storage vector.
-
using BoundingBox = Acts::AxisAlignedBoundingBox<Acts::Experimental::DetectorVolume, Acts::ActsScalar, 3>
-
class DetectorVolumeBuilder : public Acts::Experimental::IDetectorComponentBuilder
- #include <Acts/Detector/DetectorVolumeBuilder.hpp>
A generic detector volume builder that uses an external builder for shape and portals and an internal structure builder for volume internals.
Note
Although this helper builds only a single volume, it is to the outside presented as a DetectorComponent with shell; like this it can be transparently be used for the downstream detector construction process.
Public Functions
-
DetectorVolumeBuilder(const Config &cfg, std::unique_ptr<const Logger> mlogger = getDefaultLogger("DetectorVolumeBuilder", Logging::INFO))
Constructor with configuration arguments.
- Parameters
cfg – is the configuration struct
mlogger – logging instance for screen output
-
virtual DetectorComponent construct(const GeometryContext &gctx) const final
Final implementation of a volume builder that is purely defined by an internal and external structure builder.
- Parameters
gctx – The geometry context for this call
- Returns
an outgoing detector component
-
struct Config
- #include <Acts/Detector/DetectorVolumeBuilder.hpp>
Nested configuration object.
Public Members
-
bool addInternalsToRoot = false
Add eventual internal volume to root.
-
std::string auxiliary = ""
Auxiliary information.
-
std::shared_ptr<const IExternalStructureBuilder> externalsBuilder = nullptr
An external builder.
-
std::shared_ptr<const IGeometryIdGenerator> geoIdGenerator = nullptr
The geometry id generator.
-
std::shared_ptr<const IInternalStructureBuilder> internalsBuilder = nullptr
An internal builder.
-
std::string name = "unnamed"
The name of the volume to be built.
-
bool addInternalsToRoot = false
-
DetectorVolumeBuilder(const Config &cfg, std::unique_ptr<const Logger> mlogger = getDefaultLogger("DetectorVolumeBuilder", Logging::INFO))
-
class DetectorVolumeFactory
- #include <Acts/Detector/DetectorVolume.hpp>
A detector volume factory which first constructs the detector volume and then constructs the portals.
This ensures that the std::shared_ptr holding the detector volume is not weak when assigning to the portals.
Public Static Functions
Create a detector volume - from factory.
Create a detector volume - from factory.
-
struct DetectorVolumeFiller
- #include <Acts/Navigation/NavigationStateFillers.hpp>
Filler of the current volume.
Public Static Functions
Helper struct that allows to fill a volume into the navigation state, it allows to use common navigation structs for volume, portal, surfaces.
- Parameters
nState – the navigation state
volume – the volume that is filled
-
struct DetectorVolumesCollection
- #include <Acts/Navigation/DetectorVolumeUpdators.hpp>
This holds and extracts a collection of detector volumes.
Alternatively an extractor could also use the detector and its associated detector volume container for volume extraction.
Public Functions
Extract a voume from a collection.
Note
that geometry context and navigation state are ignored here
- Parameters
index – are access indices into the surfaces store
- Returns
the extracted volume
Public Members
-
std::vector<const DetectorVolume*> dVolumes = {}
The volumes held by this collection.
-
struct EndOfWorldImpl : public Acts::Experimental::INavigationDelegate
- #include <Acts/Navigation/DetectorVolumeUpdators.hpp>
The end of world sets the volume pointer of the navigation state to nullptr, usually indicates the end of the known world, hence the name.
Public Functions
a null volume link - explicitly
Note
the method parameters are ignored
-
struct ExternalStructure
- #include <Acts/Detector/DetectorComponents.hpp>
Holder struct for the external structure components required to construct a detectorVolume.
Public Members
-
std::unique_ptr<VolumeBounds> bounds = nullptr
A shape definition.
-
PortalGenerator portalGenerator
And a portal generator.
-
Transform3 transform = Transform3::Identity()
A 3D transform where the volume should be positioned.
-
std::unique_ptr<VolumeBounds> bounds = nullptr
-
class GeometryIdGenerator : public Acts::Experimental::IGeometryIdGenerator
- #include <Acts/Detector/GeometryIdGenerator.hpp>
This is the default implementation of the geometry id generator.
It is a simple counter based generator that assigns ids to the geometry and increments the counter for each object type.
Sub counters, i.e. for the sensitive surfaces, are reset after the volume call, such that a new volume or layer volume would start from counter 0 again.
If the generator is configured to override existing ids, it will do so and not respect previously assigned ids.
If the generator is configured in container mode, it will increase the layer id for each layer volume with confined surfaces.
Public Functions
-
inline GeometryIdGenerator(const Config &cfg, std::unique_ptr<const Logger> mlogger = getDefaultLogger("GeometryIdGenerator", Logging::INFO))
Constructor with config.
- Parameters
cfg – is the geometry configuration object
mlogger – is the logging instance
-
~GeometryIdGenerator() override = default
-
virtual void assignGeometryId(IGeometryIdGenerator::GeoIdCache &cache, DetectorVolume &dVolume) const final
Method for assigning a geometry id to a detector volume.
- Parameters
cache – is the cache object for e.g. object counting
dVolume – the detector volume to assign the geometry id to
-
virtual void assignGeometryId(IGeometryIdGenerator::GeoIdCache &cache, Portal &portal) const final
Method for assigning a geometry id to a portal.
- Parameters
cache – is the cache object for e.g. object counting
portal – the portal to assign the geometry id to
-
virtual void assignGeometryId(IGeometryIdGenerator::GeoIdCache &cache, Surface &surface) const final
Method for assigning a geometry id to a surface.
- Parameters
cache – is the cache object for e.g. object counting
surface – the surface to assign the geometry id to
-
virtual IGeometryIdGenerator::GeoIdCache generateCache() const final
Interface method to generata a geometry id cache.
- Returns
a geometry id cache decorated in a std::any object
-
struct Cache
- #include <Acts/Detector/GeometryIdGenerator.hpp>
Nested cache struct.
Public Members
-
unsigned int layerCount = 0u
Cache count of the layer volume, for container mode.
-
unsigned int passiveCount = 0u
Cache count of passive surfaces.
-
unsigned int portalCount = 0u
Cache count of the portal surfaces.
-
unsigned int sensitiveCount = 0u
Cache count of sensitive surfaces.
-
unsigned int volumeCount = 0u
Cache count of the volume, for non-container mode.
-
unsigned int layerCount = 0u
-
struct Config
- #include <Acts/Detector/GeometryIdGenerator.hpp>
Nested config struct.
Public Members
-
unsigned int containerId = 0u
Container id (if container mode), will not be incremented.
-
bool containerMode = false
Container mode.
-
bool overrideExistingIds = false
Force override existing ids.
-
bool resetSubCounters = true
Resetting mode.
-
unsigned int containerId = 0u
-
inline GeometryIdGenerator(const Config &cfg, std::unique_ptr<const Logger> mlogger = getDefaultLogger("GeometryIdGenerator", Logging::INFO))
-
template<typename propagator_t, typename traj_t>
class Gx2Fitter - #include <Acts/TrackFitting/GlobalChiSquareFitter.hpp>
Global Chi Square fitter (GX2F) implementation.
TODO Write description
- Template Parameters
propagator_t – Type of the propagation class
Public Functions
-
inline Gx2Fitter(propagator_t pPropagator, std::unique_ptr<const Logger> _logger = getDefaultLogger("Gx2Fitter", Logging::INFO))
-
template<typename source_link_iterator_t, typename start_parameters_t, typename parameters_t = BoundTrackParameters, typename track_container_t, template<typename> class holder_t, bool _isdn = isDirectNavigator>
inline auto fit(source_link_iterator_t it, source_link_iterator_t end, const start_parameters_t &sParameters, const Gx2FitterOptions<traj_t> &gx2fOptions, TrackContainer<track_container_t, traj_t, holder_t> &trackContainer) const -> std::enable_if_t<!_isdn, Result<typename TrackContainer<track_container_t, traj_t, holder_t>::TrackProxy>> Fit implementation.
Note
The input measurements are given in the form of
SourceLink
s. It’s the calibrators job to turn them into calibrated measurements used in the fit.- Template Parameters
source_link_iterator_t – Iterator type used to pass source links
start_parameters_t – Type of the initial parameters
parameters_t – Type of parameters used for local parameters
track_container_t – Type of the track container backend
holder_t – Type defining track container backend ownership
- Parameters
it – Begin iterator for the fittable uncalibrated measurements
end – End iterator for the fittable uncalibrated measurements
sParameters – The initial track parameters
gx2fOptions – Gx2FitterOptions steering the fit
trackContainer – Input track container storage to append into
- Returns
the output as an output track
-
template<typename traj_t>
struct Gx2FitterExtensions - #include <Acts/TrackFitting/GlobalChiSquareFitter.hpp>
Extension struct which holds delegates to customize the KF behavior.
Public Types
-
using Calibrator = Delegate<void(const GeometryContext&, const CalibrationContext&, const SourceLink&, TrackStateProxy)>
-
using ConstTrackStateProxy = typename MultiTrajectory<traj_t>::ConstTrackStateProxy
-
using OutlierFinder = Delegate<bool(ConstTrackStateProxy)>
-
using Parameters = typename TrackStateProxy::Parameters
-
using TrackStateProxy = typename MultiTrajectory<traj_t>::TrackStateProxy
-
using Updater = Delegate<Result<void>(const GeometryContext&, TrackStateProxy, Direction, const Logger&)>
Public Functions
-
inline Gx2FitterExtensions()
Default constructor which connects the default void components.
Public Members
-
Calibrator calibrator
The Calibrator is a dedicated calibration algorithm that allows to calibrate measurements using track information, this could be e.g.
sagging for wires, module deformations, etc.
-
OutlierFinder outlierFinder
Determines whether a measurement is supposed to be considered as an outlier.
-
SourceLinkSurfaceAccessor surfaceAccessor
Retrieves the associated surface from a source link.
-
Updater updater
The updater incorporates measurement information into the track parameters.
-
using Calibrator = Delegate<void(const GeometryContext&, const CalibrationContext&, const SourceLink&, TrackStateProxy)>
-
template<typename traj_t>
struct Gx2FitterOptions - #include <Acts/TrackFitting/GlobalChiSquareFitter.hpp>
Combined options for the Global-Chi-Square fitter.
- Template Parameters
traj_t – The trajectory type
Public Functions
-
Gx2FitterOptions() = delete
Contexts are required and the options must not be default-constructible.
-
inline Gx2FitterOptions(const GeometryContext &gctx, const MagneticFieldContext &mctx, std::reference_wrapper<const CalibrationContext> cctx, Gx2FitterExtensions<traj_t> extensions_, const PropagatorPlainOptions &pOptions, const Surface *rSurface = nullptr, bool mScattering = false, bool eLoss = false, const FreeToBoundCorrection &freeToBoundCorrection_ = FreeToBoundCorrection(false), const size_t nUpdateMax_ = 5)
PropagatorOptions with context.
- Parameters
gctx – The geometry context for this fit
mctx – The magnetic context for this fit
cctx – The calibration context for this fit
extensions_ – The KF extensions
pOptions – The plain propagator options
rSurface – The reference surface for the fit to be expressed at
mScattering – Whether to include multiple scattering
eLoss – Whether to include energy loss
freeToBoundCorrection_ – Correction for non-linearity effect during transform from free to bound
nUpdateMax_ – Max number of iterations for updating the parameters
Public Members
-
std::reference_wrapper<const CalibrationContext> calibrationContext
context object for the calibration
-
bool energyLoss = false
Whether to consider energy loss.
-
Gx2FitterExtensions<traj_t> extensions
-
FreeToBoundCorrection freeToBoundCorrection
Whether to include non-linear correction during global to local transformation.
-
std::reference_wrapper<const GeometryContext> geoContext
Context object for the geometry.
-
std::reference_wrapper<const MagneticFieldContext> magFieldContext
Context object for the magnetic field.
-
bool multipleScattering = false
Whether to consider multiple scattering.
-
size_t nUpdateMax = 5
Max number of iterations during the fit.
-
PropagatorPlainOptions propagatorPlainOptions
The trivial propagator options.
-
const Surface *referenceSurface = nullptr
The reference Surface.
-
template<typename traj_t>
struct Gx2FitterResult - #include <Acts/TrackFitting/GlobalChiSquareFitter.hpp>
Public Members
-
std::vector<ActsScalar> collectorCovariances
-
std::vector<BoundVector> collectorProjectedJacobians
-
std::vector<ActsScalar> collectorResiduals
-
bool finished = false
-
std::optional<BoundTrackParameters> fittedParameters
-
traj_t *fittedStates = {nullptr}
-
BoundMatrix jacobianFromStart = BoundMatrix::Identity()
-
size_t lastMeasurementIndex = Acts::MultiTrajectoryTraits::kInvalid
-
size_t lastTrackIndex = Acts::MultiTrajectoryTraits::kInvalid
-
size_t measurementHoles = 0
-
size_t measurementStates = 0
-
std::vector<const Surface*> missedActiveSurfaces
-
std::vector<const Surface*> passedAgainSurfaces
-
size_t processedStates = 0
-
size_t surfaceCount = 0
-
std::vector<ActsScalar> collectorCovariances
-
class IDetectorBuilder
- #include <Acts/Detector/interface/IDetectorBuilder.hpp>
This is the interface for building a Detector object.
This is the top level interface, all lower level building blocks should be done with detector component builders.
Note
As this is the last builder, the returned detector object is const and cannot be modified anymore.
Subclassed by Acts::Experimental::DetectorBuilder
Public Functions
-
virtual ~IDetectorBuilder() = default
-
virtual std::shared_ptr<const Detector> construct(const GeometryContext &gctx) const = 0
The virtual interface definition for detector builders.
- Parameters
gctx – the geometry context at the creation of the internal structure
- Returns
a shared detector object
-
virtual ~IDetectorBuilder() = default
-
class IDetectorComponentBuilder
- #include <Acts/Detector/interface/IDetectorComponentBuilder.hpp>
This is the interface for detector component builders; such a builder could be a simple detector volume builder, with or without internal structure, or more complicated objects.
Subclassed by Acts::Experimental::CylindricalContainerBuilder, Acts::Experimental::DetectorVolumeBuilder
Public Functions
-
virtual ~IDetectorComponentBuilder() = default
-
virtual DetectorComponent construct(const GeometryContext &gctx) const = 0
The interface method to be implemented by all detector component builder.
- Parameters
gctx – The geometry context for this call
- Returns
an outgoing detector component
-
virtual ~IDetectorComponentBuilder() = default
-
class IExternalStructureBuilder
- #include <Acts/Detector/interface/IExternalStructureBuilder.hpp>
This is the interface definition of external structure builders for DetectorVolume construction.
Subclassed by Acts::Experimental::VolumeStructureBuilder
Public Functions
-
virtual ~IExternalStructureBuilder() = default
-
virtual ExternalStructure construct(const GeometryContext &gctx) const = 0
The virtual interface definition for external structure creation.
- Parameters
gctx – the geometry context at the creation of the internal structure
- Returns
a consistent set of detector volume externals
-
virtual ~IExternalStructureBuilder() = default
-
class IGeometryIdGenerator
- #include <Acts/Detector/interface/IGeometryIdGenerator.hpp>
This is the interface for generating geometry ids and assign them to detector volumes, portals and surfaces.
Subclassed by Acts::Experimental::GeometryIdGenerator
Public Types
-
using GeoIdCache = std::any
Public Functions
-
virtual ~IGeometryIdGenerator() = default
-
virtual void assignGeometryId(GeoIdCache &cache, DetectorVolume &dVolume) const = 0
The virtual interface definition for assigning a geometry id to a detector volume.
- Parameters
cache – is the cache object for e.g. object counting
dVolume – the detector volume to assign the geometry id to
-
virtual void assignGeometryId(GeoIdCache &cache, Portal &portal) const = 0
The virtual interface definition for assigning a geometry id to a portal.
- Parameters
cache – is the cache object for e.g. object counting
portal – the portal to assign the geometry id to
-
virtual void assignGeometryId(GeoIdCache &cache, Surface &surface) const = 0
The virtual interface definition for assigning a geometry id to a surface.
- Parameters
cache – is the cache object for e.g. object counting
surface – the surface to assign the geometry id to
-
virtual GeoIdCache generateCache() const = 0
Virtual interface method to generata a geometry id cache.
- Returns
a geometry id cache decorated in a std::any object
-
using GeoIdCache = std::any
-
class IInternalStructureBuilder
- #include <Acts/Detector/interface/IInternalStructureBuilder.hpp>
This is the interface definition of internal structure builders for DetectorVolume construction.
It is assumed that each builder returns a consistent set of DetectorVolume internals, which in turn can be directly provided to a DetectorVolume constructor.
Subclassed by Acts::Experimental::LayerStructureBuilder
Public Functions
-
virtual ~IInternalStructureBuilder() = default
-
virtual InternalStructure construct(const GeometryContext &gctx) const = 0
The interface definition for internal structure creation.
- Parameters
gctx – the geometry context at the creation of the internal structure
- Returns
a consistent set of detector volume internals
-
virtual ~IInternalStructureBuilder() = default
- #include <Acts/Navigation/NavigationDelegates.hpp>
Base class for navigation delegates This allows to define a common Owning delegate schema, which in turn allows for accessing the holder of the delegate implementation for e.g.
I/O or display
Subclassed by Acts::Experimental::IndexedUpdatorImpl< VariableBoundIndexGrid1, DetectorVolumesCollection, DetectorVolumeFiller >, Acts::Experimental::AdditionalSurfacesImpl, Acts::Experimental::AllPortalsAndSurfacesImpl, Acts::Experimental::AllPortalsImpl, Acts::Experimental::BoundVolumesGrid1Impl, Acts::Experimental::ChainedUpdatorImpl< updators_t >, Acts::Experimental::EndOfWorldImpl, Acts::Experimental::IndexedUpdatorImpl< grid_t, extractor_type, filler_type >, Acts::Experimental::MultiLayerSurfacesUpdatorImpl< grid_t, path_generator >, Acts::Experimental::NoopFinder, Acts::Experimental::RootVolumeFinder, Acts::Experimental::SingleDetectorVolumeImpl, Acts::Experimental::SingleObjectImpl< object_type, filler_type >, Acts::Experimental::StaticUpdatorImpl< extractor_type, filler_type >, Acts::Experimental::TrialAndErrorVolumeFinder
Public Functions
-
struct IndexedDetectorVolumeExtractor
- #include <Acts/Navigation/DetectorVolumeFinders.hpp>
A helper struct that allows to extrace a volume from the detector by its index.
Public Static Functions
Extract the surfaces from the volume.
- Parameters
gctx – the geometry contextfor this extraction call
nState – is the current navigation state
index – is the index in the global detector volume store
- Returns
a raw DetectorVolume pointer
-
class IndexedRootVolumeFinderBuilder : public Acts::Experimental::IRootVolumeFinderBuilder
- #include <Acts/Detector/IndexedRootVolumeFinderBuilder.hpp>
This is the interface for builders that create root volume finder delegates.
Public Functions
-
IndexedRootVolumeFinderBuilder(std::vector<Acts::BinningValue> binning)
Constructor with binning casts.
- Parameters
binning – the cast values for the grid binning
The virtual interface definition for root volume finder builders.
- Parameters
gctx – the geometry context at the creation of the internal structure
rootVolumes – the root volumes to be used for the finder
- Returns
a shared detector object
-
IndexedRootVolumeFinderBuilder(std::vector<Acts::BinningValue> binning)
-
struct IndexedSubVolumesExtractor
- #include <Acts/Detector/DetectorVolume.hpp>
Helper extractors: indexed sub volume of a volume.
Public Static Functions
Extract the sub volumes from the volume.
- Parameters
gctx – the geometry contextfor this extraction call
nState – is the current navigation state
indices – are access indices into the volume store
- Returns
a vector of raw DetectorVolume pointers
-
struct IndexedSurfacesExtractor
- #include <Acts/Detector/DetectorVolume.hpp>
Helper extractors: indexed surfaces.
Public Static Functions
Extract the surfaces from the volume.
Note
no out of boudns checking is done
- Parameters
gctx – the geometry contextfor this extraction call
nState – is the current navigation state
indices – are access indices into the surfaces store
- Returns
a vector of raw Surface pointers
-
template<typename grid_t, typename extractor_type, typename filler_type>
class IndexedUpdatorImpl : public Acts::Experimental::INavigationDelegate - #include <Acts/Navigation/NavigationStateUpdators.hpp>
This is an index grid based navigation state updator, it uses an extractor type and a filler type to handle the navigation state.
It can be used for volumes, surfaces at convenience
Note
a transform is applied
p3l = transform * p3
in order to allow shifted, transformed grids- Template Parameters
grid_t – is the type of the grid
extractor_type – is the helper to extract the object
filler_type – is the helper to fill the object into the nState
Public Types
-
using grid_type = grid_t
Broadcast the grid type.
Public Functions
-
IndexedUpdatorImpl() = delete
-
inline IndexedUpdatorImpl(grid_type &&igrid, const std::array<BinningValue, grid_type::DIM> &icasts, const Transform3 &itr = Transform3::Identity())
Constructor for a grid based surface attacher.
- Parameters
igrid – the grid that is moved into this attacher
icasts – is the cast values array
itr – a transform applied to the global position
-
inline std::array<ActsScalar, grid_type::DIM> castPosition(const Vector3 &position) const
Cast into a lookup position.
- Parameters
position – is the position of the update call
updates the navigation state with objects from the grid according to the filling type AFTER applying
p3loc = transform * p3
Note
this is attaching objects without intersecting nor checking
- Parameters
gctx – is the Geometry context of this call
nState – the navigation state to which the surfaces are attached
Public Members
-
std::array<BinningValue, grid_type::DIM> casts = {}
These are the cast parameters - copied from constructor.
-
extractor_type extractor
An extractor helper to get the object(s) from the volume.
-
grid_type grid
The grid where the indices are stored.
-
Transform3 transform = Transform3::Identity()
A transform to be applied to the position.
-
struct InternalStructure
- #include <Acts/Detector/DetectorComponents.hpp>
Holder struct for the internal structure components of a DetectorVolume.
Note
the surface surfacesUpdator needs to handle also portal providing of contained volumes.
Public Members
-
std::vector<std::shared_ptr<Surface>> surfaces = {}
Contained surfaces of this volume, handled by the surfacesUpdator.
-
SurfaceCandidatesUpdator surfacesUpdator
Navigation delegate for surfaces.
-
std::vector<std::shared_ptr<DetectorVolume>> volumes = {}
Contained volumes of this volume, handled by the volumeUpdator.
-
DetectorVolumeUpdator volumeUpdator
-
std::vector<std::shared_ptr<Surface>> surfaces = {}
-
class IRootVolumeFinderBuilder
- #include <Acts/Detector/interface/IRootVolumeFinderBuilder.hpp>
This is the interface for builders that create root volume finder delegates.
Subclassed by Acts::Experimental::IndexedRootVolumeFinderBuilder
Public Functions
-
virtual ~IRootVolumeFinderBuilder() = default
The virtual interface definition for root volume finder builders.
- Parameters
gctx – the geometry context at the creation of the internal structure
rootVolumes – the root volumes to be used for the search
- Returns
a shared detector object
-
virtual ~IRootVolumeFinderBuilder() = default
-
class ISurfacesProvider
- #include <Acts/Detector/interface/ISurfacesProvider.hpp>
This is the interface for providing surfaces to the detector building process.
These surfaces manly describe the sensitive detector surfaces, but also passive (i.e. material carrying) surfaces are considered.
These could be prefilled, or created on demand when the detector is built (to increase memory locality)
Subclassed by Acts::Experimental::KdtSurfacesProvider< kDIM, bSize, reference_generator >, Acts::Experimental::LayerStructureBuilder::SurfacesHolder
Public Functions
-
virtual ~ISurfacesProvider() = default
-
virtual std::vector<std::shared_ptr<Surface>> surfaces(const GeometryContext &gctx) const = 0
The virtual interface definition for detector surface providers.
- Parameters
gctx – the geometry context at the creation of the internal structure
- Returns
a shared detector object
-
virtual ~ISurfacesProvider() = default
-
template<size_t kDIM = 2u, size_t bSize = 100u, typename reference_generator = detail::PolyhedronReferenceGenerator<1u, false>>
class KdtSurfaces - #include <Acts/Detector/KdtSurfacesProvider.hpp>
A wrapper class around a KDTree of surfaces.
It also deals with the conversion from global query to KDTree lookup positions
Public Types
-
using KDTS = KDTree<kDIM, std::shared_ptr<Surface>, ActsScalar, std::array, bSize>
Broadcast the surface KDT type.
-
using Query = std::array<ActsScalar, kDIM>
Broadcast the query definition.
Public Functions
Constructor from a vector of surfaces.
- Parameters
gctx – the geometry context of this call
surfaces – the surfaces to be filled into the tree
casts – the cast list from global position into kdtree local
rgen – the reference point generator
-
inline std::vector<std::shared_ptr<Surface>> surfaces(const Extent &extent) const
Query with an Extent object.
- Parameters
extent – is the range Extent to be queried
- Returns
the matching surfaces fpulled from the KDT structure
-
inline std::vector<std::shared_ptr<Surface>> surfaces(const RangeXD<kDIM, ActsScalar> &range) const
Query with a Range object.
- Parameters
range – is the range to be queried
- Returns
the matching surfaces from the KDT structure
-
using KDTS = KDTree<kDIM, std::shared_ptr<Surface>, ActsScalar, std::array, bSize>
-
template<size_t kDIM = 2u, size_t bSize = 100u, typename reference_generator = detail::PolyhedronReferenceGenerator<1u, false>>
class KdtSurfacesProvider : public Acts::Experimental::ISurfacesProvider - #include <Acts/Detector/KdtSurfacesProvider.hpp>
Callable struct wrapper around the KDT surface structure.
This allows to create small region based callable structs at configuration level that are then connected to an InternalStructureBuilder
Public Functions
The prefilled surfaces in a KD tree structure, it is generally shared amongst different providers.
- Parameters
kdts – the prefilled KDTree structure
kregion – the region where these are pulled from
-
inline std::vector<std::shared_ptr<Surface>> surfaces([[maybe_unused]] const GeometryContext &gctx) const final
The call to provide the surfaces.
-
class LayerStructureBuilder : public Acts::Experimental::IInternalStructureBuilder
- #include <Acts/Detector/LayerStructureBuilder.hpp>
This is a builder of layer structures to be contained within a DetectorVolume, it extends the IInternalStructureBuilder interface and provides the internal structure components of DetectorVolume objects to be constructed.
It uses the IndexedSurfaceGrid to bin the internal surfaces, and allows for additional support surfaces that are added to the structure and indexing mechanism. Those support structures can also be approximated by planar surfaces, in order to facilitate vectorization of surface intersection calls.
The binning can be chosen with a so called
expansion
, a number which indicates the configured expanded bin window in which the surfaces are going to be filled, the details to this strategy can be found in the IndexedGridFiller and IndexedSurfacesGenerator classes.No sub volumes are added to this structure builders, hence, the DetectorVolumeFinder navigation delegate uses the “NoopFinder” breakpoint to indicate the bottom of the volume hierarchy.
Public Functions
-
LayerStructureBuilder(const Config &cfg, std::unique_ptr<const Logger> logger = getDefaultLogger("LayerStructureBuilder", Logging::INFO))
Constructor.
- Parameters
cfg – is the configuration struct
logger – logging instance for screen output
-
virtual InternalStructure construct(const GeometryContext &gctx) const final
The interface definition for internal structure creation.
- Parameters
gctx – the geometry context at the creation of the internal structure
- Returns
a consistent set of detector volume internals
-
struct Config
- #include <Acts/Detector/LayerStructureBuilder.hpp>
Configuration struct for the LayerStructureBuilder.
It contain:
a source of the surfaces to be built
a definition of surface binning on this layer
a definition of supports to be built
Public Members
-
std::string auxiliary = ""
Extra information, mainly for screen output.
-
std::vector<ProtoBinning> binnings = {}
Definition of Binnings.
-
unsigned int nSegments = 1u
Polyhedron approximations.
-
std::vector<ProtoSupport> supports = {}
Definition of Supports.
-
std::shared_ptr<ISurfacesProvider> surfacesProvider = nullptr
Connection point for a function to provide surfaces.
-
class SurfacesHolder : public Acts::Experimental::ISurfacesProvider
- #include <Acts/Detector/LayerStructureBuilder.hpp>
A holder struct for surfaces.
Public Functions
Constructor with predefined surfaces.
- Parameters
isurfaces – is the vector of surfaces
-
inline std::vector<std::shared_ptr<Surface>> surfaces([[maybe_unused]] const GeometryContext &gctx) const final
Return the surfaces from the holder.
- Parameters
gctx – is the geometry context
-
LayerStructureBuilder(const Config &cfg, std::unique_ptr<const Logger> logger = getDefaultLogger("LayerStructureBuilder", Logging::INFO))
-
template<typename grid_t, typename path_generator>
class MultiLayerSurfacesUpdatorImpl : public Acts::Experimental::INavigationDelegate - #include <Acts/Navigation/MultiLayerSurfacesUpdator.hpp>
Public Types
-
using grid_type = grid_t
Broadcast the grid type.
Public Functions
-
MultiLayerSurfacesUpdatorImpl() = delete
-
inline MultiLayerSurfacesUpdatorImpl(grid_type &&igrid, const std::array<BinningValue, grid_type::DIM> &icasts, const Transform3 &itr = Transform3::Identity())
Constructor for a grid based surface attacher.
- Parameters
igrid – the grid that is moved into this attacher
icasts – is the cast values array
itr – a transform applied to the global position
-
inline std::array<ActsScalar, grid_type::DIM> castPosition(const Vector3 &position) const
Cast into a lookup position.
- Parameters
position – is the position of the update call
-
inline void resolveDuplicates(const GeometryContext &gctx, std::vector<const Acts::Surface*> &surfaces) const
Resolve duplicate on surface candidates.
- Parameters
gctx – The geometry context of the current geometry
surfaces – is the surface candidates to check and resolve for duplicates
Public Members
-
std::array<BinningValue, grid_type::DIM> casts = {}
These are the cast parameters - copied from constructor.
-
grid_type grid
The grid where the indices are stored.
-
path_generator pgenerator
The path generator.
-
Transform3 transform = Transform3::Identity()
A transform to be applied to the position.
-
using grid_type = grid_t
-
class MultiWireStructureBuilder
- #include <Acts/Detector/MultiWireStructureBuilder.hpp>
Public Functions
-
MultiWireStructureBuilder(const Config &config, std::unique_ptr<const Acts::Logger> logger = Acts::getDefaultLogger("MultiWireStructureBuilder", Acts::Logging::VERBOSE))
Constructor.
- Parameters
config – The configure of the MultiWireStructureBuilder
logger – logging instance for screen output
-
~MultiWireStructureBuilder() = default
-
Acts::Experimental::DetectorComponent construct(const Acts::GeometryContext &gctx)
Construct the detector component.
- Parameters
gctx – The Geometry Context of the current geometry
- Returns
a detector component object with the detector volume of the multilayer
-
struct Config
- #include <Acts/Detector/MultiWireStructureBuilder.hpp>
Configuration struct for the MultiWireStructure Builder.
Public Members
-
std::vector<ProtoBinning> mlBinning = {}
-
std::vector<ActsScalar> mlBounds = {}
The bounds of the multi-wire volume.
-
std::string name = ""
The name of the detector volume component.
-
float toleranceOverlap = 10.
A tolerance config.
-
Transform3 transform = Transform3::Identity()
The transform of the Multi Wire.
-
std::vector<ProtoBinning> mlBinning = {}
-
MultiWireStructureBuilder(const Config &config, std::unique_ptr<const Acts::Logger> logger = Acts::getDefaultLogger("MultiWireStructureBuilder", Acts::Logging::VERBOSE))
- #include <Acts/Navigation/NavigationState.hpp>
A navigation state struct that is holding the current navigation information.
It relies on Surfaces and Portals, all navigation entities have to be described in these terms.
Subclassed by Acts::Experimental::DetectorNavigator::State
Public Types
Surface candidate vector alias, this allows to use e.g.
boost_small vector or other stl like containers
Public Members
The current absolute charge.
The current absolute momentum.
Auxiliary attached information.
The current detector in processing.
The current portal, i.e the position is on portal.
The current surface, i.e the position is on surface.
The current volume in processing, i.e. the position is inside.
The current direction.
The current magnetic field.
An overstep tolerance.
The current position.
Boundary directives for surfaces.
That are the candidate surfaces to process.
- #include <Acts/Navigation/NavigationState.hpp>
A surface candidate and its intersection.
A candidates can either be a surface or a portal (which contain a surface)
Public Members
The boundary check used for the candidate, boundary checks can differ for sensitive surfaces and portals.
A candidate intersection, in Surface view.
Or a portal.
A candidate is either a detector Surface.
-
struct NoopFinder : public Acts::Experimental::INavigationDelegate
- #include <Acts/Navigation/DetectorVolumeFinders.hpp>
Public Functions
-
struct PathGridSurfacesGenerator
- #include <Acts/Navigation/MultiLayerSurfacesUpdator.hpp>
Public Functions
-
inline std::vector<Vector3> operator()(Vector3 startPosition, const Vector3 &direction, ActsScalar stepSize, std::size_t numberOfSteps) const
-
inline std::vector<Vector3> operator()(Vector3 startPosition, const Vector3 &direction, ActsScalar stepSize, std::size_t numberOfSteps) const
-
class Portal : public std::enable_shared_from_this<Portal>
- #include <Acts/Detector/Portal.hpp>
A portal description between the detector volumes.
It has a Surface representation for navigation and propagation and guides from one volume to the next.
The surface can carry material to allow mapping onto portal positions if required.
Public Types
-
using AttachedDetectorVolumes = std::array<std::vector<std::shared_ptr<DetectorVolume>>, 2u>
The vector of attached volumes forward/backward, this is useful in the geometry building.
-
using DetectorVolumeUpdators = std::array<DetectorVolumeUpdator, 2u>
The volume links forward/backward with respect to the surface normal.
Public Functions
-
Portal() = delete
-
virtual ~Portal() = default
Update the volume link, w/o directive, i.e.
it relies that there’s only one remaining link to be set, throws an exception if that’s not the case
Note
this overwrites the existing link
- Parameters
dVolumeUpdator – is the mangaged volume updator delegate
attachedVolumes – is the list of attached volumes for book keeping
Update the volume link.
Note
this overwrites the existing link
- Parameters
dir – the direction of the link
dVolumeUpdator – is the mangaged volume updator delegate
attachedVolumes – is the list of attached volumes for book keeping
-
void assignGeometryId(const GeometryIdentifier &geometryId)
Set the geometry identifier (to the underlying surface)
- Parameters
geometryId – the geometry identifier to be assigned
-
AttachedDetectorVolumes &attachedDetectorVolumes()
-
const DetectorVolumeUpdators &detectorVolumeUpdators() const
Fuse with another portal, this one is kept.
Note
this will move the portal links from the other into this volume, it will throw an exception if the portals are not fusable
Note
that other will be overwritten to point to this
- Parameters
other – is the portal that will be fused
Retrieve a
std::shared_ptr
for this surface (non-const version)Note
Will error if this was not created through the
makeShared
factory since it needs access to the original reference. In C++14 this is undefined behavior (but most likely implemented as abad_weak_ptr
exception), in C++17 it is defined as that exception.Note
Only call this if you need shared ownership of this object.
- Returns
The shared pointer
Retrieve a
std::shared_ptr
for this surface (const version)Note
Will error if this was not created through the
makeShared
factory since it needs access to the original reference. In C++14 this is undefined behavior, but most likely implemented as abad_weak_ptr
exception, in C++17 it is defined as that exception.Note
Only call this if you need shared ownership of this object.
- Returns
The shared pointer
-
Surface &surface()
Non-const access to the surface reference.
-
const Surface &surface() const
Const access to the surface representation.
Update the current volume.
- Parameters
gctx – is the Geometry context of this call
nState – [in,out] the navigation state for the volume to be updated
Public Static Functions
Factory for producing memory managed instances of Portal.
Friends
- friend class DetectorVolume
-
using AttachedDetectorVolumes = std::array<std::vector<std::shared_ptr<DetectorVolume>>, 2u>
-
struct PortalsFiller
- #include <Acts/Navigation/NavigationStateFillers.hpp>
Fillers and attachers for portals to act on the navigation state.
Public Static Functions
Helper struct that allows to fill surfaces into the candidate vector it allows to use common navigation structs for volume, portal, surfaces.
- Parameters
nState – the navigation state
portals – the portals that are filled in
-
struct ProtoBinning
- #include <Acts/Detector/ProtoBinning.hpp>
Simple helper class to define a binning structure.
Note
no checks are performed on the consistency, this is only for convenience that the binning can be defined and then translated into concrete axis types
Public Functions
-
inline ProtoBinning(BinningValue bValue, Acts::detail::AxisBoundaryType bType, ActsScalar minE, ActsScalar maxE, std::size_t nbins, std::size_t exp = 0u)
Convenience constructors - recommended for variable binning.
- Parameters
bValue – the value/cast in which this is binned
bType – the axis boundary type
minE – the lowest edge of the binning
maxE – the highest edge of the binning
nbins – the number of bins
exp – the expansion (in bins)
-
inline ProtoBinning(BinningValue bValue, Acts::detail::AxisBoundaryType bType, const std::vector<ActsScalar> &e, std::size_t exp = 0u)
Convenience constructors - recommended for variable binning.
- Parameters
bValue – the value/cast in which this is binned
bType – the axis boundary type
e – the bin edges (variable binning)
exp – the expansion (in bins)
-
inline std::size_t bins() const
Public Members
-
Acts::detail::AxisType axisType = Acts::detail::AxisType::Equidistant
The axis type: equidistant or variable.
-
BinningValue binValue = BinningValue::binValues
The binning value of this.
-
Acts::detail::AxisBoundaryType boundaryType = Acts::detail::AxisBoundaryType::Bound
The axis boundary type: Open, Bound or Closed.
-
std::vector<ActsScalar> edges = {}
The binning edges.
-
std::size_t expansion = 0u
An expansion for the filling (in bins)
-
inline ProtoBinning(BinningValue bValue, Acts::detail::AxisBoundaryType bType, ActsScalar minE, ActsScalar maxE, std::size_t nbins, std::size_t exp = 0u)
-
struct ProtoSupport
- #include <Acts/Detector/ProtoSupport.hpp>
Support parameter definitions.
Public Members
-
bool assignToAll = false
Indicate if the support surface should always be addressed in navigation.
-
std::vector<BinningValue> constraints = s_binningValues
Define in which values the support should be constrained.
-
unsigned int splits = 1u
Potential splits into planar approximations.
-
std::shared_ptr<Surface> surface = nullptr
Alternatively - the support surface can already be provided.
-
std::optional<Transform3> transform = std::nullopt
The (optional) layer transform.
-
Surface::SurfaceType type = Surface::SurfaceType::Other
The surface type to be built.
-
std::array<ActsScalar, 5u> values = {}
Define whether you want to build support structures.
-
bool assignToAll = false
-
struct RootDetectorVolumes
- #include <Acts/Detector/DetectorComponents.hpp>
Container to collect root volumes for the construction of a Detector.
This struct collects all root volumes that will then be provided to the Detector object
Note
each root volume is expected to contain a full search tree for eventually contained sub volumes
Public Members
-
DetectorVolumeUpdator volumeFinder
The Root volumes finder.
-
std::vector<std::shared_ptr<DetectorVolume>> volumes = {}
The list of root volumes.
-
DetectorVolumeUpdator volumeFinder
-
struct RootVolumeFinder : public Acts::Experimental::INavigationDelegate
- #include <Acts/Navigation/DetectorVolumeFinders.hpp>
Public Functions
-
struct SingleDetectorVolumeImpl : public Acts::Experimental::INavigationDelegate
- #include <Acts/Navigation/DetectorVolumeUpdators.hpp>
Single volume updator, it sets the current navigation volume to the volume in question.
Public Functions
-
SingleDetectorVolumeImpl() = delete
-
inline SingleDetectorVolumeImpl(const DetectorVolume *sVolume) noexcept(false)
Allowed constructor.
- Parameters
sVolume – the volume to which it points
a null volume link - explicitly
Note
the method parameters are ignored
Public Members
-
const DetectorVolume *dVolume = nullptr
-
SingleDetectorVolumeImpl() = delete
-
template<typename object_type, typename filler_type>
class SingleObjectImpl : public Acts::Experimental::INavigationDelegate - #include <Acts/Navigation/NavigationStateUpdators.hpp>
This sets a single object, e.g.
single surface or single volume
- Template Parameters
object_type – the type of the object to be filled
filler_type – is the helper to fill the object into nState
Public Functions
-
inline SingleObjectImpl(const object_type *so)
Convenience constructor.
- Parameters
so – the single object
updates the navigation state with a single object that is filled in
Note
this is attaching objects without intersecting nor checking
- Parameters
gctx – is the Geometry context of this call
nState – the navigation state to which the surfaces are attached
-
template<typename extractor_type, typename filler_type>
class StaticUpdatorImpl : public Acts::Experimental::INavigationDelegate - #include <Acts/Navigation/NavigationStateUpdators.hpp>
This uses state less extractor and fillers to manipulate the navigation state.
- Template Parameters
extractor_type – the helper to extract the objects from
filler_type – is the helper to fill the object into nState
Public Functions
updates the navigation state with a single object that is filled in
Note
this is attaching objects without intersecting nor checking
- Parameters
gctx – is the Geometry context of this call
nState – the navigation state to which the surfaces are attached
-
struct SurfacesFiller
- #include <Acts/Navigation/NavigationStateFillers.hpp>
Fillers and attachers for surfaces to act on the navigation state.
Public Static Functions
Helper struct that allows to fill surfaces into the candidate vector it allows to use common navigation structs for volume, portal, surfaces.
- Parameters
nState – the navigation state
surfaces – the surfaces that are filled in
-
struct TrialAndErrorVolumeFinder : public Acts::Experimental::INavigationDelegate
- #include <Acts/Navigation/DetectorVolumeFinders.hpp>
Public Functions
-
class VolumeStructureBuilder : public Acts::Experimental::IExternalStructureBuilder
- #include <Acts/Detector/VolumeStructureBuilder.hpp>
This class provides the external detector volume structure, configured either from:
a volume extent
from an array with volume bounds identification
Note
A starting transform (defaulted to identity) can be provided, in case of volume bounds construction from an
Acts::Extent
object, the transform steming from the extent definition will be applied on top of the provided starting transform. In case of volume bounds construction from an array of values, the starting transform is already the final volume placement.Public Functions
-
VolumeStructureBuilder(const Config &cfg, std::unique_ptr<const Logger> mlogger = getDefaultLogger("VolumeStructureBuilder", Logging::INFO))
Constructor.
- Parameters
cfg – is the configuration struct
mlogger – logging instance for screen output
-
virtual ExternalStructure construct(const GeometryContext &gctx) const final
The interface definition for internal structure creation.
- Parameters
gctx – the geometry context at the creation of the internal structure
- Returns
a consistent set of detector volume internals
-
struct Config
- #include <Acts/Detector/VolumeStructureBuilder.hpp>
Nexted configuration struct.
Public Members
-
std::string auxiliary = ""
Some auxiliary information.
-
VolumeBounds::BoundsType boundsType = VolumeBounds::BoundsType::eOther
A defined volume bound type.
-
std::vector<ActsScalar> boundValues = {}
The values (if already defined)
-
std::optional<Extent> extent = std::nullopt
The optional extent to feed into the values.
-
Transform3 transform = Transform3::Identity()
The starting transform.
-
std::string auxiliary = ""
-
using DetectorBlock = std::tuple<DetectorVolumes, ProtoContainer>