19#include "detray/definitions/detail/qualifiers.hpp"
20#include "detray/definitions/geometry.hpp"
21#include "detray/definitions/indexing.hpp"
22#include "detray/definitions/units.hpp"
23#include "detray/geometry/identifier.hpp"
24#include "detray/geometry/mask.hpp"
30template <
typename algebra_t,
typename shape_t,
typename material_t,
73 : m_transform{std::move(trf)},
74 m_mask(std::move(
mask)),
84 return (m_barcode == rhs.m_barcode);
119 m_barcode.set_volume(new_idx);
133 constexpr auto index() const ->
dindex {
return m_barcode.index(); }
179 return m_barcode.id() == surface_id::e_sensitive;
185 return m_barcode.id() == surface_id::e_portal;
191 return m_barcode.id() == surface_id::e_passive;
202 geometry::identifier m_barcode{};
auto set_volume(const dindex new_idx) -> void
Definition external_surface.hpp:118
constexpr auto transform() const -> const transform3_type &
Definition external_surface.hpp:143
constexpr external_surface()=default
Default constructor.
auto set_index(const dindex new_idx) -> void
Sets a new surface index (index in surface collection of surface store).
Definition external_surface.hpp:129
dtransform3D< algebra_t > transform3_type
Transform type describing the surface placement.
Definition external_surface.hpp:35
nav_link_t navigation_link
Link type of the mask to a volume.
Definition external_surface.hpp:41
constexpr auto is_passive() const -> bool
Definition external_surface.hpp:190
constexpr auto id() const -> surface_id
Definition external_surface.hpp:113
constexpr auto material() -> material_type &
Definition external_surface.hpp:166
constexpr auto identifier() const -> geometry::identifier
Definition external_surface.hpp:98
constexpr auto is_sensitive() const -> bool
Definition external_surface.hpp:178
constexpr auto volume() const -> dindex
Definition external_surface.hpp:124
constexpr external_surface(transform3_type &&trf, mask_type &&mask, material_type &&material, const dindex volume, const surface_id sf_id)
Constructor with full arguments - move semantics.
Definition external_surface.hpp:70
auto set_id(const surface_id new_id) -> void
Definition external_surface.hpp:109
detray::mask< shape_t, algebra_t, nav_link_t > mask_type
Mask type describing the surface shape and extent.
Definition external_surface.hpp:37
void set_material(const material_type &offset)
Update the material link.
Definition external_surface.hpp:161
constexpr auto index() const -> dindex
Definition external_surface.hpp:133
constexpr auto mask() const -> const mask_type &
Definition external_surface.hpp:155
constexpr auto material() const -> const material_type &
Definition external_surface.hpp:170
auto set_barcode(const geometry::identifier bcd) -> void
Sets a new surface barcode.
Definition external_surface.hpp:90
void set_mask(const mask_type m)
Update the mask link.
Definition external_surface.hpp:151
void set_transform(const transform3_type &trf)
Update the transform index.
Definition external_surface.hpp:139
constexpr auto has_material() const -> bool
Definition external_surface.hpp:174
material_t material_type
Material representation attached to this surface.
Definition external_surface.hpp:39
constexpr auto barcode() const -> geometry::identifier
Definition external_surface.hpp:94
constexpr external_surface(const transform3_type &trf, const mask_type &mask, const material_type &material, const dindex volume, const surface_id sf_id)
Constructor with full arguments.
Definition external_surface.hpp:54
constexpr auto is_portal() const -> bool
Definition external_surface.hpp:184
constexpr auto operator==(const external_surface &rhs) const -> bool
Equality operator.
Definition external_surface.hpp:83
Unique identifier for geometry objects, based on the ACTS GeometryIdentifier.
Definition identifier.hpp:36
Mask a region on a surface and link it to a volume.
Definition mask.hpp:46
Detray include(s).
Definition array_operators.hpp:18
unsigned int dindex
Default index type.
Definition indexing.hpp:18
surface_id
surface type, resolved during navigation.
Definition geometry.hpp:41
get_transform3D_t< A, T > dtransform3D
Three-dimensional transform type for algebra A and value type T.
Definition algebra.hpp:84