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 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...