10#ifndef KF_CORE_KfDefs_h
11#define KF_CORE_KfDefs_h 1
66 using FieldFn_t = std::function<std::tuple<double, double, double>(
double,
double,
double)>;
84 template<
class T =
double>
88 template<
class T =
double>
91 template<
class T =
double>
94 template<
class T =
double>
97 template<
class T =
double>
100 template<
class T =
double>
103 template<
class T =
double>
106 template<
class T =
double>
109 template<
class T =
double>
114 template<
typename T1,
typename T2 = T1>
118 inline constexpr int Undef<int> = std::numeric_limits<int>::min();
121 inline constexpr unsigned Undef<unsigned> = std::numeric_limits<unsigned>::max();
124 inline constexpr float Undef<float> = std::numeric_limits<float>::signaling_NaN();
127 inline constexpr double Undef<double> = std::numeric_limits<double>::signaling_NaN();
130 inline constexpr fscal Undef<fvec> = std::numeric_limits<fscal>::signaling_NaN();
134 constexpr auto ZeroFieldFn = [](double, double, double)
constexpr {
return std::make_tuple(0., 0., 0.); };
Implementation selection for the SIMD utilities (VS or pseudo)
constexpr auto PionMass
Pion mass [GeV/c2].
constexpr auto ElectronMass
Electron mass [GeV/c2].
constexpr auto ZeroFieldFn
Zero magnetic field function.
constexpr T2 Undef
Undefined values.
constexpr int MaxNofDetSubsystems
Max number of detector types (STS, TRD, RICH,...)
constexpr auto MinField
Minimal (negligible) magnetic field value [kG].
constexpr auto ProtonMass
Proton mass [GeV/c2] (PDG 11.08.2022)
constexpr bool GetterCheck
Bound check in getters.
constexpr int DebugLvl
Level of debug output.
constexpr auto MuonMass
Muon mass [GeV/c2].
constexpr int MaxNofDetComponents
Max number of detector components (stations, layers, ...)
constexpr auto KaonMass
Kaon mass [GeV/c2] (PDG 22.08.2023)
constexpr auto SpeedOfLight
Speed of light [cm/ns].
EFieldMode
Enumiration for the magnetic field representation variants in the track fitting algorithm.
@ Intrpl
Interpolated magnetic field.
@ Orig
Original magnetic field function.
std::array< T, 3 > GeoVector_t
Geometry (spatial) vector.
typename Literal< T >::type Literal_t
EFieldType
Magnetic field type in different setup regions.
@ Normal
Field near the tracker subsystem.
std::function< std::tuple< double, double, double >(double, double, double)> FieldFn_t
Magnetic field function type Signature: tuple<Bx, By, Bz>(x, y, z);.
Replaces the type T with the Literal::type to handle the constant expressions for different constants...