|
ROOT
Reference Guide |
|
Go to the documentation of this file.
4 #ifndef ROOT_Math_Functions
5 #define ROOT_Math_Functions
61 template <
class T,
unsigned int D>
class SVector;
87 return (lhs > rhs) ? lhs : rhs;
101 return (lhs < rhs) ? lhs : rhs;
114 return (
x-
static_cast<int>(
x) < 0.5) ?
static_cast<int>(
x) :
static_cast<int>(
x+1);
128 inline int Sign(
const T&
x) {
return (
x==0)? 0 : (
x<0)? -1 : 1; }
133 template <
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);
164 template <
class T,
unsigned int D>
172 template <
class A,
class T,
unsigned int D>
180 template <
class A,
class T,
unsigned int D>
189 template <
class A,
class B,
class T,
unsigned int D>
198 template <
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& ) {
214 return Square(rhs.apply(0));
229 template <
class T,
unsigned int D>
237 template <
class A,
class T,
unsigned int D>
252 template <
class T,
unsigned int D>
260 template <
class A,
class T,
unsigned int D>
283 template <
class A,
class T>
307 template <
class A,
class T>
335 template <
class A,
class T>
348 template <
class T,
class A>
361 template <
class A,
class B,
class T>
381 template <
class T,
unsigned int D>
389 template <
class A,
class T,
unsigned int D>
398 template <
class T,
unsigned int D>
399 inline VecExpr<BinaryOp<DivOp<T>, SVector<T,D>, Constant<T>,
T>,
T, D>
400 unit(
const SVector<T,D>& lhs) {
401 typedef BinaryOp<DivOp<T>, SVector<T,D>, Constant<T>,
T> DivOpBinOp;
402 return VecExpr<DivOpBinOp,T,D>(DivOpBinOp(DivOp<T>(),lhs,Constant<T>(mag(lhs))));
408 template <
class A,
class T,
unsigned int D>
409 inline VecExpr<BinaryOp<DivOp<T>, VecExpr<A,T,D>, Constant<T>,
T>,
T, D>
410 unit(
const VecExpr<A,T,D>& lhs) {
411 typedef BinaryOp<DivOp<T>, VecExpr<A,T,D>, Constant<T>,
T> DivOpBinOp;
412 return VecExpr<DivOpBinOp,T,D>(DivOpBinOp(DivOp<T>(),lhs,Constant<T>(mag(lhs))));
SVector: a generic fixed size Vector class.
int Sign(const T &x)
sign.
T apply(unsigned int i) const
const T Maximum(const T &lhs, const T &rhs)
maximum.
int Round(const T &x)
round.
const T Square(const T &x)
square Template function to compute , for any type T returning a type T
T Mag(const SVector< T, D > &rhs)
Vector magnitude (Euclidian norm) Compute : .
Expression wrapper class for Vector objects.
SVector< T, D > Unit(const SVector< T, D > &rhs)
Unit.
T apply(unsigned int i) const
access the parse tree. Index starts from zero
SVector< T, D > & Unit()
transform vector into a vector of length 1
T Mag2(const SVector< T, D > &rhs)
Vector magnitude square Template to compute .
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 .
const T Minimum(const T &lhs, const T &rhs)
minimum.
T Dot(const SVector< T, D > &lhs, const SVector< T, D > &rhs)
Vector dot product.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
Namespace for new Math classes and functions.
T Lmag(const SVector< T, 4 > &rhs)
Lmag: Minkowski Lorentz-Vector norm (only for 4-dim vectors) Length of a vector Lorentz-Vector: .