ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
cartesian3D.hpp
1// This file is part of the ACTS project.
2//
3// Copyright (C) 2016 CERN for the benefit of the ACTS project
4//
5// This Source Code Form is subject to the terms of the Mozilla Public
6// License, v. 2.0. If a copy of the MPL was not distributed with this
7// file, You can obtain one at https://mozilla.org/MPL/2.0/.
8
9#pragma once
10
11// Project include(s)
12#include "detray/definitions/algebra.hpp"
13#include "detray/definitions/detail/qualifiers.hpp"
14
15namespace detray {
16
18template <concepts::algebra algebra_t>
21 using algebra_type = algebra_t;
32
35
43 DETRAY_HOST_DEVICE
45 const point3_type &p,
46 const vector3_type &dir) {
48 }
49
56 DETRAY_HOST_DEVICE
57 static inline loc_point global_to_local(const transform3_type &trf,
58 const point3_type &p,
59 const vector3_type & /*dir*/) {
60 return trf.point_to_local(p);
61 }
62
68 DETRAY_HOST_DEVICE static inline point3_type local_to_global(
69 const transform3_type &trf, const point3_type &p) {
70 return trf.point_to_global(p);
71 }
72
78 template <typename mask_t>
79 DETRAY_HOST_DEVICE static inline point3_type local_to_global(
80 const transform3_type &trf, const mask_t & /*mask*/, const loc_point &p,
81 const vector3_type & /*dir*/) {
83 }
84
87 DETRAY_HOST_DEVICE static inline vector3_type normal(
88 const transform3_type & /*trf*/, const point3_type & /*p*/) {
89 // Not implemented!
90 assert(false);
91 return {};
92 }
93
94}; // struct cartesian3D
95
96} // namespace detray
Detray include(s).
Definition array_operators.hpp:18
get_scalar_t< A, T > dscalar
Scalar type for algebra A and value type T.
Definition algebra.hpp:64
get_vector3D_t< A, T > dvector3D
Three-dimensional vector type for algebra A and value type T.
Definition algebra.hpp:80
get_transform3D_t< A, T > dtransform3D
Three-dimensional transform type for algebra A and value type T.
Definition algebra.hpp:84
get_point3D_t< A, T > dpoint3D
Three-dimensional point type for algebra A and value type T.
Definition algebra.hpp:72
get_point2D_t< A, T > dpoint2D
Two-dimensional point type for algebra A and value type T.
Definition algebra.hpp:68
Projection into a 3D cartesian coordinate frame.
Definition cartesian3D.hpp:19
point3_type loc_point
Local point type in 3D cartesian coordinates.
Definition cartesian3D.hpp:34
dtransform3D< algebra_t > transform3_type
Three-dimensional transform type.
Definition cartesian3D.hpp:31
dpoint3D< algebra_t > point3_type
Three-dimensional point type.
Definition cartesian3D.hpp:27
algebra_t algebra_type
Algebra backend used by this coordinate frame.
Definition cartesian3D.hpp:21
static point3_type global_to_local_3D(const transform3_type &trf, const point3_type &p, const vector3_type &dir)
This method transforms a point from a global cartesian 3D frame to a local 3D cartesian point Convert...
Definition cartesian3D.hpp:44
dvector3D< algebra_t > vector3_type
Three-dimensional vector type.
Definition cartesian3D.hpp:29
static loc_point global_to_local(const transform3_type &trf, const point3_type &p, const vector3_type &)
This method transforms a point from a global cartesian 3D frame to a local 3D cartesian point Convert...
Definition cartesian3D.hpp:57
dpoint2D< algebra_t > point2_type
Two-dimensional point type.
Definition cartesian3D.hpp:25
static point3_type local_to_global(const transform3_type &trf, const mask_t &, const loc_point &p, const vector3_type &)
This method transforms from a local 3D cartesian point to a point in the global cartesian 3D frame.
Definition cartesian3D.hpp:79
static point3_type local_to_global(const transform3_type &trf, const point3_type &p)
This method transforms from a local 3D cartesian point to a point in the global cartesian 3D frame.
Definition cartesian3D.hpp:68
dscalar< algebra_t > scalar_type
Scalar type associated with the algebra backend.
Definition cartesian3D.hpp:23
static vector3_type normal(const transform3_type &, const point3_type &)
Definition cartesian3D.hpp:87