10#ifndef KF_CORE_KfDefs_h
11#define KF_CORE_KfDefs_h 1
116 template<
typename Float>
169 using FieldFn_t = std::function<std::tuple<double, double, double>(
double,
double,
double)>;
187 template<
class T =
double>
191 template<
class T =
double>
194 template<
class T =
double>
197 template<
class T =
double>
200 template<
class T =
double>
203 template<
class T =
double>
206 template<
class T =
double>
209 template<
class T =
double>
212 template<
class T =
double>
217 template<
typename T1,
typename T2 = T1>
221 inline constexpr int Undef<int> = std::numeric_limits<int>::min();
227 inline constexpr float Undef<float> = std::numeric_limits<float>::signaling_NaN();
230 inline constexpr double Undef<double> = std::numeric_limits<double>::signaling_NaN();
237 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 SpeedOfLightInv
Inverse speed of light [ns/cm].
constexpr auto Pi
Value of PI, used in ROOT TMath.
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.
@ Original
Original magnetic field function.
@ Interpolated
Interpolated magnetic field.
static constexpr Tag< 7, 0 > Tag70
Tag for (7,0) element.
static constexpr Tag< 4, 1 > Tag41
Tag for (4,1) element.
static constexpr Tag< 1, 2 > Tag12
Tag for (1,2) element.
static constexpr Tag< 3, 0 > Tag30
Tag for (3,0) element.
static constexpr Tag< 6, 1 > Tag61
Tag for (6,1) element.
static constexpr Tag< 0, 4 > Tag04
Tag for (0,4) element.
static constexpr Tag< 4, 0 > Tag40
Tag for (4,0) element.
static constexpr Tag< 4, 5 > Tag45
Tag for (4,5) element.
static constexpr Tag< 1, 3 > Tag13
Tag for (1,3) element.
static constexpr Tag< 4, 3 > Tag43
Tag for (4,3) element.
static constexpr Tag< 7, 2 > Tag72
Tag for (7,2) element.
static constexpr Tag< 7, 3 > Tag73
Tag for (7,3) element.
static constexpr Tag< 3, 6 > Tag36
Tag for (3,6) element.
static constexpr Tag< 7, 4 > Tag74
Tag for (7,4) element.
static constexpr Tag< 2, 3 > Tag23
Tag for (2,3) element.
static constexpr Tag< 3, 7 > Tag37
Tag for (3,7) element.
static constexpr Tag< 2, 7 > Tag27
Tag for (2,7) element.
static constexpr Tag< 3, 1 > Tag31
Tag for (3,1) element.
static constexpr Tag< 0, 3 > Tag03
Tag for (0,3) element.
static constexpr Tag< 5, 4 > Tag54
Tag for (5,4) element.
std::array< T, 3 > GeoVector_t
Geometry (spatial) vector.
static constexpr Tag< 7, 7 > Tag77
Tag for (7,7) element.
static constexpr Tag< 1, 7 > Tag17
Tag for (1,7) element.
typename Literal< T >::type Literal_t
static constexpr Tag< 1, 4 > Tag14
Tag for (1,4) element.
static constexpr Tag< 5, 0 > Tag50
Tag for (5,0) element.
static constexpr Tag< 1, 6 > Tag16
Tag for (1,6) element.
static constexpr Tag< 2, 4 > Tag24
Tag for (2,4) element.
static constexpr Tag< 0, 1 > Tag01
Tag for (0,1) element.
static constexpr Tag< 6, 3 > Tag63
Tag for (6,3) element.
static constexpr Tag< 3, 2 > Tag32
Tag for (3,2) element.
static constexpr Tag< 4, 6 > Tag46
Tag for (4,6) element.
static constexpr Tag< 2, 2 > Tag22
Tag for (2,2) element.
static constexpr Tag< 1, 1 > Tag11
Tag for (1,1) element.
static constexpr Tag< 5, 5 > Tag55
Tag for (5,5) element.
static constexpr Tag< 4, 2 > Tag42
Tag for (4,2) element.
static constexpr Tag< 5, 6 > Tag56
Tag for (5,6) element.
static constexpr Tag< 0, 7 > Tag07
Tag for (0,7) element.
static constexpr Tag< 2, 6 > Tag26
Tag for (2,6) element.
static constexpr Tag< 5, 7 > Tag57
Tag for (5,7) element.
static constexpr Tag< 7, 6 > Tag76
Tag for (7,6) element.
@ Y
Fit the time component.
@ N
Do not fit the time component.
static constexpr Tag< 6, 0 > Tag60
Tag for (6,0) element.
static constexpr Tag< 5, 2 > Tag52
Tag for (5,2) element.
static constexpr Tag< 1, 0 > Tag10
Tag for (1,0) element.
static constexpr Tag< 2, 5 > Tag25
Tag for (2,5) element.
static constexpr Tag< 2, 1 > Tag21
Tag for (2,1) element.
static constexpr Tag< 0, 6 > Tag06
Tag for (0,6) element.
EFieldType
Magnetic field type in different setup regions.
@ Normal
Field near the tracker subsystem.
static constexpr Tag< 1, 5 > Tag15
Tag for (1,5) element.
static constexpr Tag< 6, 4 > Tag64
Tag for (6,4) element.
static constexpr Tag< 6, 6 > Tag66
Tag for (6,6) element.
static constexpr Tag< 3, 5 > Tag35
Tag for (3,5) element.
static constexpr Tag< 6, 7 > Tag67
Tag for (6,7) element.
static constexpr Tag< 3, 3 > Tag33
Tag for (3,3) element.
static constexpr Tag< 6, 5 > Tag65
Tag for (6,5) element.
static constexpr Tag< 3, 4 > Tag34
Tag for (3,4) element.
static constexpr Tag< 0, 2 > Tag02
Tag for (0,2) element.
static constexpr Tag< 6, 2 > Tag62
Tag for (6,2) element.
static constexpr Tag< 2, 0 > Tag20
Tag for (2,0) element.
static constexpr Tag< 4, 4 > Tag44
Tag for (4,4) element.
static constexpr Tag< 0, 5 > Tag05
Tag for (0,5) element.
static constexpr Tag< 4, 7 > Tag47
Tag for (4,7) element.
static constexpr Tag< 7, 5 > Tag75
Tag for (7,5) element.
static constexpr Tag< 5, 3 > Tag53
Tag for (5,3) element.
std::function< std::tuple< double, double, double >(double, double, double)> FieldFn_t
Magnetic field function type Signature: tuple<Bx, By, Bz>(x, y, z);.
static constexpr Tag< 5, 1 > Tag51
Tag for (5,1) element.
static constexpr Tag< 0, 0 > Tag00
Tag for (0,0) element.
static constexpr Tag< 7, 1 > Tag71
Tag for (7,1) element.
A floating-point tag for tag dispatching.
Replaces the type T with the Literal::type to handle the constant expressions for different constants...
A generic tag for tag dispatching.