ATLAS Offline Software
Enumerations | Functions
findIdxOfMinimum Namespace Reference

Enumerations

enum  Impl {
  VecUpdateIdxOnNewMin = 0, VecAlwaysTrackIdx = 1, VecMinThenIdx = 2, C = 3,
  STL = 4
}
 

Functions

template<enum Impl I>
ATH_ALWAYS_INLINE int32_t impl (const float *distancesIn, int n)
 

Enumeration Type Documentation

◆ Impl

Enumerator
VecUpdateIdxOnNewMin 
VecAlwaysTrackIdx 
VecMinThenIdx 
STL 

Definition at line 350 of file GSFFindIndexOfMinimum.h.

350  {
352  VecAlwaysTrackIdx = 1,
353  VecMinThenIdx = 2,
354  C = 3,
355  STL = 4
356 };

Function Documentation

◆ impl()

template<enum Impl I>
ATH_ALWAYS_INLINE int32_t findIdxOfMinimum::impl ( const float *  distancesIn,
int  n 
)

Definition at line 359 of file GSFFindIndexOfMinimum.h.

359  {
360  static_assert(I == VecUpdateIdxOnNewMin || I == VecAlwaysTrackIdx ||
361  I == VecMinThenIdx || I == C || I == STL,
362  "Not a valid implementation chosen");
363 
364  if constexpr (I == VecUpdateIdxOnNewMin) {
365  return findIdxOfMinDetail::vecUpdateIdxOnNewMin(distancesIn, n);
366  } else if constexpr (I == VecAlwaysTrackIdx) {
367  return findIdxOfMinDetail::vecAlwaysTrackIdx(distancesIn, n);
368  } else if constexpr (I == VecMinThenIdx) {
369  return findIdxOfMinDetail::vecMinThenIdx(distancesIn, n);
370  } else if constexpr (I == C) {
371  return findIdxOfMinDetail::scalarC(distancesIn, n);
372  } else if constexpr (I == STL) {
373  return findIdxOfMinDetail::scalarSTL(distancesIn, n);
374  }
375  else {
376  return 0; // Avoid cppchcheck warning.
377  }
378 }
findIdxOfMinimum::VecUpdateIdxOnNewMin
@ VecUpdateIdxOnNewMin
Definition: GSFFindIndexOfMinimum.h:351
findIdxOfMinDetail::scalarSTL
ATH_ALWAYS_INLINE int32_t scalarSTL(const float *distancesIn, int n)
Definition: GSFFindIndexOfMinimum.h:91
beamspotman.n
n
Definition: beamspotman.py:731
findIdxOfMinDetail::vecMinThenIdx
ATH_ALWAYS_INLINE int32_t vecMinThenIdx(const float *distancesIn, int n)
Definition: GSFFindIndexOfMinimum.h:310
findIdxOfMinimum::VecMinThenIdx
@ VecMinThenIdx
Definition: GSFFindIndexOfMinimum.h:353
findIdxOfMinDetail::scalarC
ATH_ALWAYS_INLINE int32_t scalarC(const float *distancesIn, int n)
Definition: GSFFindIndexOfMinimum.h:74
findIdxOfMinDetail::vecUpdateIdxOnNewMin
ATH_ALWAYS_INLINE int32_t vecUpdateIdxOnNewMin(const float *distancesIn, int n)
Definition: GSFFindIndexOfMinimum.h:185
findIdxOfMinimum::C
@ C
Definition: GSFFindIndexOfMinimum.h:354
I
#define I(x, y, z)
Definition: MD5.cxx:116
findIdxOfMinDetail::vecAlwaysTrackIdx
ATH_ALWAYS_INLINE int32_t vecAlwaysTrackIdx(const float *distancesIn, int n)
Definition: GSFFindIndexOfMinimum.h:99
findIdxOfMinimum::STL
@ STL
Definition: GSFFindIndexOfMinimum.h:355
findIdxOfMinimum::VecAlwaysTrackIdx
@ VecAlwaysTrackIdx
Definition: GSFFindIndexOfMinimum.h:352