CbmRoot
Loading...
Searching...
No Matches
KfDefs.h File Reference

Common constant definitions for the Kalman Filter library. More...

#include "KfSimd.h"
#include <array>
#include <functional>
#include <limits>
#include <tuple>
Include dependency graph for KfDefs.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  cbm::algo::kf::Tag<... >
 A generic tag for tag dispatching. More...
 
struct  cbm::algo::kf::FloatTag< Float >
 A floating-point tag for tag dispatching. More...
 
struct  cbm::algo::kf::Literal< T >
 Replaces the type T with the Literal::type to handle the constant expressions for different constants. More...
 
struct  cbm::algo::kf::Literal< fvec >
 

Namespaces

namespace  cbm
 
namespace  cbm::algo
 
namespace  cbm::algo::kf
 
namespace  cbm::algo::kf::defs
 
namespace  cbm::algo::kf::defs::dbg
 

Typedefs

template<typename T>
using cbm::algo::kf::Literal_t = typename Literal<T>::type
 
template<class T>
using cbm::algo::kf::GeoVector_t = std::array<T, 3>
 Geometry (spatial) vector.
 
using cbm::algo::kf::FieldFn_t = std::function<std::tuple<double, double, double>(double, double, double)>
 Magnetic field function type Signature: tuple<Bx, By, Bz>(x, y, z);.
 

Enumerations

enum class  cbm::algo::kf::EFieldMode { cbm::algo::kf::Interpolated , cbm::algo::kf::Original }
 Enumiration for the magnetic field representation variants in the track fitting algorithm. More...
 
enum class  cbm::algo::kf::EFieldType { cbm::algo::kf::Normal , cbm::algo::kf::Null }
 Magnetic field type in different setup regions. More...
 
enum class  cbm::algo::kf::DoFitTime { cbm::algo::kf::N = false , cbm::algo::kf::Y = true }
 
enum class  cbm::algo::kf::DoPrintDebug { cbm::algo::kf::N = false , cbm::algo::kf::Y = true }
 

Variables

static constexpr Tag< 0, 0 > cbm::algo::kf::Tag00 = {}
 Tag for (0,0) element.
 
static constexpr Tag< 0, 1 > cbm::algo::kf::Tag01 = {}
 Tag for (0,1) element.
 
static constexpr Tag< 0, 2 > cbm::algo::kf::Tag02 = {}
 Tag for (0,2) element.
 
static constexpr Tag< 0, 3 > cbm::algo::kf::Tag03 = {}
 Tag for (0,3) element.
 
static constexpr Tag< 0, 4 > cbm::algo::kf::Tag04 = {}
 Tag for (0,4) element.
 
static constexpr Tag< 0, 5 > cbm::algo::kf::Tag05 = {}
 Tag for (0,5) element.
 
static constexpr Tag< 0, 6 > cbm::algo::kf::Tag06 = {}
 Tag for (0,6) element.
 
static constexpr Tag< 0, 7 > cbm::algo::kf::Tag07 = {}
 Tag for (0,7) element.
 
static constexpr Tag< 1, 0 > cbm::algo::kf::Tag10 = {}
 Tag for (1,0) element.
 
static constexpr Tag< 1, 1 > cbm::algo::kf::Tag11 = {}
 Tag for (1,1) element.
 
static constexpr Tag< 1, 2 > cbm::algo::kf::Tag12 = {}
 Tag for (1,2) element.
 
static constexpr Tag< 1, 3 > cbm::algo::kf::Tag13 = {}
 Tag for (1,3) element.
 
static constexpr Tag< 1, 4 > cbm::algo::kf::Tag14 = {}
 Tag for (1,4) element.
 
static constexpr Tag< 1, 5 > cbm::algo::kf::Tag15 = {}
 Tag for (1,5) element.
 
static constexpr Tag< 1, 6 > cbm::algo::kf::Tag16 = {}
 Tag for (1,6) element.
 
static constexpr Tag< 1, 7 > cbm::algo::kf::Tag17 = {}
 Tag for (1,7) element.
 
static constexpr Tag< 2, 0 > cbm::algo::kf::Tag20 = {}
 Tag for (2,0) element.
 
static constexpr Tag< 2, 1 > cbm::algo::kf::Tag21 = {}
 Tag for (2,1) element.
 
static constexpr Tag< 2, 2 > cbm::algo::kf::Tag22 = {}
 Tag for (2,2) element.
 
static constexpr Tag< 2, 3 > cbm::algo::kf::Tag23 = {}
 Tag for (2,3) element.
 
static constexpr Tag< 2, 4 > cbm::algo::kf::Tag24 = {}
 Tag for (2,4) element.
 
static constexpr Tag< 2, 5 > cbm::algo::kf::Tag25 = {}
 Tag for (2,5) element.
 
static constexpr Tag< 2, 6 > cbm::algo::kf::Tag26 = {}
 Tag for (2,6) element.
 
static constexpr Tag< 2, 7 > cbm::algo::kf::Tag27 = {}
 Tag for (2,7) element.
 
static constexpr Tag< 3, 0 > cbm::algo::kf::Tag30 = {}
 Tag for (3,0) element.
 
static constexpr Tag< 3, 1 > cbm::algo::kf::Tag31 = {}
 Tag for (3,1) element.
 
static constexpr Tag< 3, 2 > cbm::algo::kf::Tag32 = {}
 Tag for (3,2) element.
 
static constexpr Tag< 3, 3 > cbm::algo::kf::Tag33 = {}
 Tag for (3,3) element.
 
static constexpr Tag< 3, 4 > cbm::algo::kf::Tag34 = {}
 Tag for (3,4) element.
 
static constexpr Tag< 3, 5 > cbm::algo::kf::Tag35 = {}
 Tag for (3,5) element.
 
static constexpr Tag< 3, 6 > cbm::algo::kf::Tag36 = {}
 Tag for (3,6) element.
 
static constexpr Tag< 3, 7 > cbm::algo::kf::Tag37 = {}
 Tag for (3,7) element.
 
static constexpr Tag< 4, 0 > cbm::algo::kf::Tag40 = {}
 Tag for (4,0) element.
 
static constexpr Tag< 4, 1 > cbm::algo::kf::Tag41 = {}
 Tag for (4,1) element.
 
static constexpr Tag< 4, 2 > cbm::algo::kf::Tag42 = {}
 Tag for (4,2) element.
 
static constexpr Tag< 4, 3 > cbm::algo::kf::Tag43 = {}
 Tag for (4,3) element.
 
static constexpr Tag< 4, 4 > cbm::algo::kf::Tag44 = {}
 Tag for (4,4) element.
 
static constexpr Tag< 4, 5 > cbm::algo::kf::Tag45 = {}
 Tag for (4,5) element.
 
static constexpr Tag< 4, 6 > cbm::algo::kf::Tag46 = {}
 Tag for (4,6) element.
 
static constexpr Tag< 4, 7 > cbm::algo::kf::Tag47 = {}
 Tag for (4,7) element.
 
static constexpr Tag< 5, 0 > cbm::algo::kf::Tag50 = {}
 Tag for (5,0) element.
 
static constexpr Tag< 5, 1 > cbm::algo::kf::Tag51 = {}
 Tag for (5,1) element.
 
static constexpr Tag< 5, 2 > cbm::algo::kf::Tag52 = {}
 Tag for (5,2) element.
 
static constexpr Tag< 5, 3 > cbm::algo::kf::Tag53 = {}
 Tag for (5,3) element.
 
static constexpr Tag< 5, 4 > cbm::algo::kf::Tag54 = {}
 Tag for (5,4) element.
 
static constexpr Tag< 5, 5 > cbm::algo::kf::Tag55 = {}
 Tag for (5,5) element.
 
static constexpr Tag< 5, 6 > cbm::algo::kf::Tag56 = {}
 Tag for (5,6) element.
 
static constexpr Tag< 5, 7 > cbm::algo::kf::Tag57 = {}
 Tag for (5,7) element.
 
static constexpr Tag< 6, 0 > cbm::algo::kf::Tag60 = {}
 Tag for (6,0) element.
 
static constexpr Tag< 6, 1 > cbm::algo::kf::Tag61 = {}
 Tag for (6,1) element.
 
static constexpr Tag< 6, 2 > cbm::algo::kf::Tag62 = {}
 Tag for (6,2) element.
 
static constexpr Tag< 6, 3 > cbm::algo::kf::Tag63 = {}
 Tag for (6,3) element.
 
static constexpr Tag< 6, 4 > cbm::algo::kf::Tag64 = {}
 Tag for (6,4) element.
 
static constexpr Tag< 6, 5 > cbm::algo::kf::Tag65 = {}
 Tag for (6,5) element.
 
static constexpr Tag< 6, 6 > cbm::algo::kf::Tag66 = {}
 Tag for (6,6) element.
 
static constexpr Tag< 6, 7 > cbm::algo::kf::Tag67 = {}
 Tag for (6,7) element.
 
static constexpr Tag< 7, 0 > cbm::algo::kf::Tag70 = {}
 Tag for (7,0) element.
 
static constexpr Tag< 7, 1 > cbm::algo::kf::Tag71 = {}
 Tag for (7,1) element.
 
static constexpr Tag< 7, 2 > cbm::algo::kf::Tag72 = {}
 Tag for (7,2) element.
 
static constexpr Tag< 7, 3 > cbm::algo::kf::Tag73 = {}
 Tag for (7,3) element.
 
static constexpr Tag< 7, 4 > cbm::algo::kf::Tag74 = {}
 Tag for (7,4) element.
 
static constexpr Tag< 7, 5 > cbm::algo::kf::Tag75 = {}
 Tag for (7,5) element.
 
static constexpr Tag< 7, 6 > cbm::algo::kf::Tag76 = {}
 Tag for (7,6) element.
 
static constexpr Tag< 7, 7 > cbm::algo::kf::Tag77 = {}
 Tag for (7,7) element.
 
constexpr int cbm::algo::kf::defs::MaxNofDetSubsystems = 256
 Max number of detector types (STS, TRD, RICH,...)
 
constexpr int cbm::algo::kf::defs::MaxNofDetComponents = 128
 Max number of detector components (stations, layers, ...)
 
constexpr int cbm::algo::kf::defs::DebugLvl = 0
 Level of debug output.
 
constexpr bool cbm::algo::kf::defs::GetterCheck = true
 Bound check in getters.
 
template<class T = double>
constexpr auto cbm::algo::kf::defs::Pi = Literal_t<T>(3.14159265358979323846L)
 Value of PI, used in ROOT TMath.
 
template<class T = double>
constexpr auto cbm::algo::kf::defs::MuonMass = Literal_t<T>(0.105658375523L)
 Muon mass [GeV/c2].
 
template<class T = double>
constexpr auto cbm::algo::kf::defs::PionMass = Literal_t<T>(0.1395703918L)
 Pion mass [GeV/c2].
 
template<class T = double>
constexpr auto cbm::algo::kf::defs::KaonMass = Literal_t<T>(0.493677L)
 Kaon mass [GeV/c2] (PDG 22.08.2023)
 
template<class T = double>
constexpr auto cbm::algo::kf::defs::ElectronMass = Literal_t<T>(0.0005109989500015L)
 Electron mass [GeV/c2].
 
template<class T = double>
constexpr auto cbm::algo::kf::defs::ProtonMass = Literal_t<T>(0.93827208816L)
 Proton mass [GeV/c2] (PDG 11.08.2022)
 
template<class T = double>
constexpr auto cbm::algo::kf::defs::SpeedOfLight = Literal_t<T>(29.9792458L)
 Speed of light [cm/ns].
 
template<class T = double>
constexpr auto cbm::algo::kf::defs::SpeedOfLightInv = Literal_t<T>(1.L) / SpeedOfLight<T>
 Inverse speed of light [ns/cm].
 
template<class T = double>
constexpr auto cbm::algo::kf::defs::MinField = Literal_t<T>(1.e-4L)
 Minimal (negligible) magnetic field value [kG].
 
template<typename T1, typename T2 = T1>
constexpr T2 cbm::algo::kf::defs::Undef
 Undefined values.
 
template<>
constexpr int cbm::algo::kf::defs::Undef< int > = std::numeric_limits<int>::min()
 
template<>
constexpr unsigned cbm::algo::kf::defs::Undef< unsigned > = std::numeric_limits<unsigned>::max()
 
template<>
constexpr float cbm::algo::kf::defs::Undef< float > = std::numeric_limits<float>::signaling_NaN()
 
template<>
constexpr double cbm::algo::kf::defs::Undef< double > = std::numeric_limits<double>::signaling_NaN()
 
template<>
constexpr fscal cbm::algo::kf::defs::Undef< fvec > = std::numeric_limits<fscal>::signaling_NaN()
 
constexpr auto cbm::algo::kf::defs::ZeroFieldFn = [](double, double, double) constexpr { return std::make_tuple(0., 0., 0.); }
 Zero magnetic field function.
 

Detailed Description

Common constant definitions for the Kalman Filter library.

Since
28.03.2024
Author
Sergei Zharko s.zha.nosp@m.rko@.nosp@m.gsi.d.nosp@m.e

Definition in file KfDefs.h.