4#ifndef ROOT_Math_HelperOps 
    5#define ROOT_Math_HelperOps 1 
   28   template <
class T, 
unsigned int D1, 
unsigned int D2, 
class R>
 
   31   template <
class A, 
class T, 
unsigned int D1, 
unsigned int D2, 
class R>
 
   34   template <
class T, 
unsigned int D>
 
   37   template <
class T, 
unsigned int D1, 
unsigned int D2>
 
   45             unsigned int D1, 
unsigned int D2,
 
   46             class A, 
class R1, 
class R2>
 
   59            for(
unsigned int i=0; i<
D1; ++i)
 
   60               for(
unsigned int j=0; 
j<
D2; ++
j) {
 
   70            for(
unsigned int i=0; i<
D1; ++i)
 
   71               for(
unsigned int j=0; 
j<
D2; ++
j) {
 
   76            for(
unsigned int i=0; i<
D1*
D2; ++i) 
lhs.fRep[i] = tmp[i];
 
 
 
   87             unsigned int D1, 
unsigned int D2,
 
  102            for(
unsigned int i=0; i<
D1; ++i)
 
  104               for(
unsigned int j=0; 
j<=i; ++
j) {
 
  113            for(
unsigned int i=0; i<
D1; ++i)
 
  114               for(
unsigned int j=0; 
j<=i; ++
j) {
 
 
 
  130   template <
class T, 
unsigned int D1, 
unsigned int D2, 
class A>
 
  160         for(
unsigned int i=0; i<D; ++i)
 
  162            for(
unsigned int j=0; 
j<=i; ++
j) {
 
 
  175         for(
unsigned int i=0; i<D; ++i)
 
  177            for(
unsigned int j=0; 
j<=i; ++
j) {
 
 
 
  193   template <
class T, 
unsigned int D1, 
unsigned int D2, 
class A,
 
  201            for(
unsigned int i=0; i<
D1; ++i)
 
  202               for(
unsigned int j=0; 
j<
D2; ++
j) {
 
  210            for(
unsigned int i=0; i<
D1; ++i)
 
  211               for(
unsigned int j=0; 
j<
D2; ++
j) {
 
  216            for(
unsigned int i=0; i<
D1*
D2; ++i) 
lhs.fRep[i] += tmp[i];
 
 
 
  230             unsigned int D1, 
unsigned int D2,
 
  234      static void Evaluate(
SMatrix<T,
D1,
D2,
MatRepSym<T,D1> >& 
lhs,  
const Expr<A,T,
D1,
D2, 
MatRepSym<T,D1> >& 
rhs)
 
  238            for(
unsigned int i=0; i<
D1; ++i)
 
  239               for(
unsigned int j=0; 
j<=i; ++
j) {
 
  247            for(
unsigned int i=0; i<
D1; ++i)
 
  248               for(
unsigned int j=0; 
j<=i; ++
j) {
 
 
 
  260   template <
class T, 
unsigned int D1, 
unsigned int D2, 
class A>
 
  277   template <
class T, 
unsigned int D1, 
unsigned int D2, 
class A,
 
  285            for(
unsigned int i=0; i<
D1; ++i)
 
  286               for(
unsigned int j=0; 
j<
D2; ++
j) {
 
  294            for(
unsigned int i=0; i<
D1; ++i)
 
  295               for(
unsigned int j=0; 
j<
D2; ++
j) {
 
  300            for(
unsigned int i=0; i<
D1*
D2; ++i) 
lhs.fRep[i] -= tmp[i];
 
 
 
  313             unsigned int D1, 
unsigned int D2,
 
  317      static void Evaluate(
SMatrix<T,
D1,
D2,
MatRepSym<T,D1> >& 
lhs,  
const Expr<A,T,
D1,
D2, 
MatRepSym<T,D1> >& 
rhs)
 
  321            for(
unsigned int i=0; i<
D1; ++i)
 
  322               for(
unsigned int j=0; 
j<=i; ++
j) {
 
  330            for(
unsigned int i=0; i<
D1; ++i)
 
  331               for(
unsigned int j=0; 
j<=i; ++
j) {
 
 
 
  344   template <
class T, 
unsigned int D1, 
unsigned int D2, 
class A>
 
  358   template <
class T, 
unsigned int D1, 
unsigned int D2,
 
  359             unsigned int D3, 
unsigned int D4,
 
  364                           unsigned int row, 
unsigned int col) {
 
  367         const unsigned int offset = row*
D2+col;
 
  369         for(
unsigned int i=0; i<
D3*
D4; ++i) {
 
 
 
  376   template <
class T, 
unsigned int D1, 
unsigned int D2,
 
  377             unsigned int D3, 
unsigned int D4,
 
  378             class A, 
class R1, 
class R2>
 
  381                           unsigned int row, 
unsigned int col) {
 
  384         const unsigned int offset = row*
D2+col;
 
  386         for(
unsigned int i=0; i<
D3*
D4; ++i) {
 
 
 
  393   template <
class T, 
unsigned int D1, 
unsigned int D2,
 
  394             unsigned int D3, 
unsigned int D4 >
 
  398                           unsigned int , 
unsigned int )
 
 
 
  405   template <
class T, 
unsigned int D1, 
unsigned int D2,
 
  406             unsigned int D3, 
unsigned int D4, 
class A >
 
  407   struct PlaceExpr<T, 
D1, 
D2, 
D3, 
D4, A, 
MatRepSym<T,
D1>, 
MatRepStd<T,
D3,
D4> > {
 
  410                           unsigned int , 
unsigned int )
 
 
 
  418   template <
class T, 
unsigned int D1, 
unsigned int D2,
 
  419             unsigned int D3, 
unsigned int D4 >
 
  423                           unsigned int row, 
unsigned int col )
 
  428         for(
unsigned int i=0; i<
D3; ++i) {
 
  429            for(
unsigned int j=0; 
j<=i; ++
j)
 
 
 
  436   template <
class T, 
unsigned int D1, 
unsigned int D2,
 
  437             unsigned int D3, 
unsigned int D4, 
class A >
 
  441                           unsigned int row, 
unsigned int col )
 
  446         for(
unsigned int i=0; i<
D3; ++i) {
 
  447            for(
unsigned int j=0; 
j<=i; ++
j)
 
 
 
  458   template <
class T, 
unsigned int D1, 
unsigned int D2,
 
  459             unsigned int D3, 
unsigned int D4,
 
  464                           unsigned int row, 
unsigned int col) {
 
  471         for(
unsigned int i=0; i<
D1; ++i) {
 
  472            for(
unsigned int j=0; 
j<
D2; ++
j)
 
 
 
  479   template <
class T, 
unsigned int D1, 
unsigned int D2,
 
  480             unsigned int D3, 
unsigned int D4 >
 
  484                           unsigned int , 
unsigned int )
 
 
 
  491   template <
class T, 
unsigned int D1, 
unsigned int D2,
 
  492             unsigned int D3, 
unsigned int D4 >
 
  496                           unsigned int row, 
unsigned int col )
 
  503         for(
unsigned int i=0; i<
D1; ++i) {
 
  504            for(
unsigned int j=0; 
j<=i; ++
j)
 
 
 
  516   template <
class T, 
unsigned int D1, 
unsigned int D2, 
class R>
 
  518      template<
class Iterator>
 
  524            Iterator 
itr = begin;
 
  526               for (
unsigned int i = 0; i < 
D1; ++i)
 
  527                  for (
unsigned int j =0; 
j <= i; ++
j) {
 
  534               for (
unsigned int i = 0; i < 
D1; ++i)
 
  535                  for (
unsigned int j = i; 
j <
D2; ++
j) {
 
  548            std::copy(begin, end, 
lhs.fRep.Array() );
 
 
 
  559   template <
class T, 
unsigned int D1, 
unsigned int D2>
 
  561      template<
class Iterator>
 
  568            std::copy(begin, end, 
lhs.fRep.Array() );
 
  571            Iterator 
itr = begin;
 
  572            for (
unsigned int i = 0; i < 
D1; ++i)
 
  573               for (
unsigned int j = i; 
j <
D2; ++
j) {
 
 
 
#define STATIC_CHECK(expr, msg)
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
 
Expression wrapper class for Matrix objects.
 
MatRepSym Matrix storage representation for a symmetric matrix of dimension NxN This class is a templ...
 
SMatrix: a generic fixed size D1 x D2 Matrix class.
 
const_iterator begin() const
 
Namespace for new Math classes and functions.
 
#define R1(v, w, x, y, z, i)
 
#define R2(v, w, x, y, z, i)
 
static void Evaluate(SMatrix< T, D1, D2, MatRepSym< T, D1 > > &lhs, Iterator begin, Iterator end, bool, bool lower, bool check=true)
 
Structure for assignment to a general matrix from iterator.
 
static void Evaluate(SMatrix< T, D1, D2, R > &lhs, Iterator begin, Iterator end, bool triang, bool lower, bool check=true)
 
Force Expression evaluation from general to symmetric.
 
static void Evaluate(SMatrix< T, D, D, MatRepSym< T, D > > &lhs, const Expr< A, T, D, D, R > &rhs)
assign a symmetric matrix from an expression
 
static void Evaluate(SMatrix< T, D, D, MatRepSym< T, D > > &lhs, const SMatrix< T, D, D, R > &rhs)
assign the symmetric matric from a general matrix
 
static void Evaluate(SMatrix< T, D1, D2, MatRepSym< T, D1 > > &lhs, const Expr< A, T, D1, D2, MatRepSym< T, D1 > > &rhs)
Evaluate the expression from symmetric to symmetric matrices.
 
static void Evaluate(SMatrix< T, D1, D2, MatRepSym< T, D1 > > &, const Expr< A, T, D1, D2, MatRepStd< T, D1, D2 > > &)
 
Structure to assign from an expression based to general matrix to general matrix.
 
static void Evaluate(SMatrix< T, D1, D2, R1 > &lhs, const Expr< A, T, D1, D2, R2 > &rhs)
Evaluate the expression from general to general matrices.
 
static void Evaluate(SMatrix< T, D1, D2, MatRepSym< T, D1 > > &lhs, const Expr< A, T, D1, D2, MatRepSym< T, D1 > > &rhs)
 
static void Evaluate(SMatrix< T, D1, D2, MatRepSym< T, D1 > > &, const Expr< A, T, D1, D2, MatRepStd< T, D1, D2 > > &)
 
Evaluate the expression performing a -= operation Need to check whether creating a temporary object w...
 
static void Evaluate(SMatrix< T, D1, D2, R1 > &lhs, const Expr< A, T, D1, D2, R2 > &rhs)
 
ROOT::Math::PlaceExpr< T, D1, D2, D3, D4, A, MatRepSym< T, D1 >, MatRepStd< T, D3, D4 > >::Evaluate static void Evaluate(SMatrix< T, D1, D2, MatRepSym< T, D1 > > &, const Expr< A, T, D3, D4, MatRepStd< T, D3, D4 > > &, unsigned int, unsigned int)
 
static void Evaluate(SMatrix< T, D1, D2, MatRepSym< T, D1 > > &lhs, const Expr< A, T, D3, D4, MatRepSym< T, D3 > > &rhs, unsigned int row, unsigned int col)
 
static void Evaluate(SMatrix< T, D1, D2, R1 > &lhs, const Expr< A, T, D3, D4, R2 > &rhs, unsigned int row, unsigned int col)
 
static void Evaluate(SMatrix< T, D1, D2, MatRepSym< T, D1 > > &, const SMatrix< T, D3, D4, MatRepStd< T, D3, D4 > > &, unsigned int, unsigned int)
 
static void Evaluate(SMatrix< T, D1, D2, MatRepSym< T, D1 > > &lhs, const SMatrix< T, D3, D4, MatRepSym< T, D3 > > &rhs, unsigned int row, unsigned int col)
 
Structure to deal when a submatrix is placed in a matrix.
 
static void Evaluate(SMatrix< T, D1, D2, R1 > &lhs, const SMatrix< T, D3, D4, R2 > &rhs, unsigned int row, unsigned int col)
 
static void Evaluate(SMatrix< T, D1, D2, MatRepSym< T, D1 > > &, const Expr< A, T, D1, D2, MatRepStd< T, D1, D2 > > &)
 
static void Evaluate(SMatrix< T, D1, D2, MatRepSym< T, D1 > > &lhs, const Expr< A, T, D1, D2, MatRepSym< T, D1 > > &rhs)
 
Evaluate the expression performing a += operation Need to check whether creating a temporary object w...
 
static void Evaluate(SMatrix< T, D1, D2, R1 > &lhs, const Expr< A, T, D1, D2, R2 > &rhs)
 
static void Evaluate(SMatrix< T, D1, D2, MatRepSym< T, D1 > > &lhs, const SMatrix< T, D3, D4, MatRepSym< T, D3 > > &rhs, unsigned int row, unsigned int col)
 
static void Evaluate(SMatrix< T, D1, D2, MatRepSym< T, D1 > > &, const SMatrix< T, D3, D4, MatRepStd< T, D3, D4 > > &, unsigned int, unsigned int)
 
Structure for getting sub matrices We have different cases according to the matrix representations.
 
static void Evaluate(SMatrix< T, D1, D2, R1 > &lhs, const SMatrix< T, D3, D4, R2 > &rhs, unsigned int row, unsigned int col)