17#ifndef INCLUDE_RECONSTRUCTIONDATAFORMATS_TRACKUTILS_H_
18#define INCLUDE_RECONSTRUCTIONDATAFORMATS_TRACKUTILS_H_
22#ifndef GPUCA_GPUCODE_DEVICE
35template <
typename value_T =
float>
36GPUd() value_T BetheBlochSolid(value_T
bg, value_T
rho = 2.33, value_T
kp1 = 0.20, value_T
kp2 = 3.00, value_T
meanI = 173e-9, value_T
meanZA = 0.49848);
38template <typename value_T =
float>
39GPUd() value_T BetheBlochSolidOpt(value_T
bg);
41template <typename value_T =
float>
45template <typename value_T>
65#ifndef GPUCA_GPUCODE_DEVICE
66 static_assert(std::is_floating_point_v<value_T>);
70 constexpr value_T
kOvSqSix = value_T(0.408248);
78 if (gpu::CAMath::Abs(
tet) > value_T(0.03)) {
82 value_T t = gpu::CAMath::Sin(value_T(0.5) *
tet);
106template <
typename value_T>
123#ifndef GPUCA_GPUCODE_DEVICE
124 static_assert(std::is_floating_point_v<value_T>);
127 constexpr value_T
mK = value_T(0.307075e-3);
128 constexpr value_T
me = value_T(0.511e-3);
129 kp1 *= value_T(2.303);
130 kp2 *= value_T(2.303);
135 value_T
d2 = value_T(0);
136 const value_T
x = gpu::CAMath::Log(
bg);
145 return dedx > value_T(0) ?
dedx : value_T(0);
149template <
typename value_T>
150GPUd() value_T BetheBlochSolidOpt(value_T
bg)
169 constexpr value_T
mK = value_T(0.307075e-3);
170 constexpr value_T
kp1 = value_T(0.20 * 2.303);
171 constexpr value_T
kp2 = value_T(3.00 * 2.303);
172 constexpr value_T
meanZA = value_T(0.49848);
173 constexpr value_T
lhwI = value_T(-1.7175226);
174 constexpr value_T log2muTomeanI = value_T(8.6839805);
179 value_T
d2 = value_T(0);
180 const value_T
x = gpu::CAMath::Log(
bg);
183 }
else if (
x >
kp1) {
188 return dedx > value_T(0) ?
dedx : value_T(0);
192template <
typename value_T>
193GPUdi() value_T BetheBlochSolidDerivative(value_T
dedx, value_T
bg)
206 constexpr value_T
mK = value_T(0.307075e-3);
207 constexpr value_T
meanZA = value_T(0.49848);
General auxilliary methods.
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat t1
const bool const int TrackITSInternal< NLayers > & track
GPUdi() TrackParametrization< value_T >
value_T std::array< value_T, 7 > & vect
constexpr value_T kOvSqSix
GPUd() value_T BetheBlochSolid(value_T bg
value_T value_T value_T value_T meanI
value_T value_T value_T value_T value_T meanZA
value_T value_T value_T kp2
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...