4#ifndef ROOT_Math_Functions 
    5#define ROOT_Math_Functions 
   61template <
class T, 
unsigned int D> 
class SVector;
 
  114  return (
x-
static_cast<int>(
x) < 0.5) ? 
static_cast<int>(
x) : 
static_cast<int>(
x+1);
 
 
  128inline int Sign(
const T& 
x) { 
return (
x==0)? 0 : (
x<0)? -1 : 1; }
 
  133template <
unsigned int I>
 
  135  template <
class A, 
class B, 
class T>
 
  136  static inline T 
f(
const A& 
lhs, 
const B& 
rhs, 
const T& 
x) {
 
 
 
  147  template <
class A, 
class B, 
class T>
 
  148  static inline T 
f(
const A& 
lhs, 
const B& 
rhs, 
const T& ) {
 
  149    return lhs.apply(0) * 
rhs.apply(0);
 
 
 
  164template <
class T, 
unsigned int D>
 
  172template <
class A, 
class T, 
unsigned int D>
 
  180template <
class A, 
class T, 
unsigned int D>
 
  189template <
class A, 
class B, 
class T, 
unsigned int D>
 
  198template <
unsigned int I>
 
  200  template <
class A, 
class T>
 
  201  static inline T 
f(
const A& 
rhs, 
const T& 
x) {
 
 
 
  212  template <
class A, 
class T>
 
  213  static inline T 
f(
const A& 
rhs, 
const T& ) {
 
 
 
  229template <
class T, 
unsigned int D>
 
  237template <
class A, 
class T, 
unsigned int D>
 
  252template <
class T, 
unsigned int D>
 
  260template <
class A, 
class T, 
unsigned int D>
 
  283template <
class A, 
class T>
 
  307template <
class A, 
class T>
 
  325                      lhs.apply(2)*
rhs.apply(1),
 
  326                      lhs.apply(2)*
rhs.apply(0) -
 
  327                      lhs.apply(0)*
rhs.apply(2),
 
  328                      lhs.apply(0)*
rhs.apply(1) -
 
  329                      lhs.apply(1)*
rhs.apply(0));
 
 
  335template <
class A, 
class T>
 
  338                      lhs.apply(2)*
rhs.apply(1),
 
  339                      lhs.apply(2)*
rhs.apply(0) -
 
  340                      lhs.apply(0)*
rhs.apply(2),
 
  341                      lhs.apply(0)*
rhs.apply(1) -
 
  342                      lhs.apply(1)*
rhs.apply(0));
 
 
  348template <
class T, 
class A>
 
  351                      lhs.apply(2)*
rhs.apply(1),
 
  352                      lhs.apply(2)*
rhs.apply(0) -
 
  353                      lhs.apply(0)*
rhs.apply(2),
 
  354                      lhs.apply(0)*
rhs.apply(1) -
 
  355                      lhs.apply(1)*
rhs.apply(0));
 
 
  361template <
class A, 
class B, 
class T>
 
  364                      lhs.apply(2)*
rhs.apply(1),
 
  365                      lhs.apply(2)*
rhs.apply(0) -
 
  366                      lhs.apply(0)*
rhs.apply(2),
 
  367                      lhs.apply(0)*
rhs.apply(1) -
 
  368                      lhs.apply(1)*
rhs.apply(0));
 
 
  381template <
class T, 
unsigned int D>
 
  389template <
class A, 
class T, 
unsigned int D>
 
  398template <
class T, 
unsigned int D>
 
  408template <
class A, 
class T, 
unsigned int D>
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
const T Square(const T &x)
square Template function to compute , for any type T returning a type T
const T Minimum(const T &lhs, const T &rhs)
minimum.
int Sign(const T &x)
sign.
int Round(const T &x)
round.
const T Maximum(const T &lhs, const T &rhs)
maximum.
SVector< T, D > Unit(const SVector< T, D > &rhs)
Unit.
SVector< T, 3 > Cross(const SVector< T, 3 > &lhs, const SVector< T, 3 > &rhs)
Vector Cross Product (only for 3-dim vectors) .
T Lmag2(const SVector< T, 4 > &rhs)
Lmag2: Square of Minkowski Lorentz-Vector norm (only for 4D Vectors) Template to compute .
T Mag2(const SVector< T, D > &rhs)
Vector magnitude square Template to compute .
T Dot(const SVector< T, D > &lhs, const SVector< T, D > &rhs)
Vector dot product.
T Mag(const SVector< T, D > &rhs)
Vector magnitude (Euclidean norm) Compute : .
T Lmag(const SVector< T, 4 > &rhs)
Lmag: Minkowski Lorentz-Vector norm (only for 4-dim vectors) Length of a vector Lorentz-Vector: .
Namespace for new Math classes and functions.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...