ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
smatrix_types.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 "algebra/impl/smatrix_getter.hpp"
13#include "algebra/impl/smatrix_transform3.hpp"
14#include "detray/algebra/concepts.hpp"
15#include "detray/algebra/type_traits.hpp"
16
17// ROOT/Smatrix include(s).
18#include <Math/SMatrix.h>
19#include <Math/SVector.h>
20
21// System include(s).
22#include <cstddef>
23
24namespace detray {
25
26namespace algebra::smatrix {
27
29using index_type = unsigned int;
31template <concepts::value T>
32using value_type = T;
34template <concepts::value T>
35using scalar_type = T;
37template <concepts::scalar T, index_type N>
38using storage_type = ROOT::Math::SVector<T, N>;
40template <concepts::scalar T, index_type N>
41using vector_type = storage_type<T, N>;
43template <concepts::scalar T, index_type ROWS, index_type COLS>
44using matrix_type = ROOT::Math::SMatrix<T, ROWS, COLS>;
45
47template <concepts::scalar T>
48using vector3 = storage_type<T, 3>;
50template <concepts::scalar T>
51using point3 = vector3<T>;
53template <concepts::scalar T>
54using vector2 = storage_type<T, 2>;
56template <concepts::scalar T>
57using point2 = vector2<T>;
58
60template <typename T>
61using transform3 = smatrix::math::transform3<T>;
62
64using element_getter = smatrix::storage::element_getter;
66using block_getter = smatrix::storage::block_getter;
67
68} // namespace algebra::smatrix
69
70DETRAY_ALGEBRA_DEFINE_TYPE_TRAITS(algebra::smatrix)
71
72} // namespace detray
constexpr double T
Magnetic field, native unit (eV*s)/(e*m²).
Definition Units.hpp:168
Detray include(s).
Definition array_operators.hpp:18