Logo ROOT   6.12/07
Reference Guide
LaProd.h
Go to the documentation of this file.
1 // @(#)root/minuit2:$Id$
2 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei 2003-2005
3 
4 /**********************************************************************
5  * *
6  * Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT *
7  * *
8  **********************************************************************/
9 
10 #ifndef ROOT_Minuit2_LaProd
11 #define ROOT_Minuit2_LaProd
12 
13 #include "Minuit2/ABProd.h"
14 #include "Minuit2/LAVector.h"
15 #include "Minuit2/LASymMatrix.h"
16 
17 namespace ROOT {
18 
19  namespace Minuit2 {
20 
21 
22 /*
23  LM" remove this for fixing alpha poblem
24 #define OP_MULT1(MT1,MT2,MAT1,MAT2,T) \
25 template<class B> \
26 inline ABObj<AlgebraicProdType<MT1,MT2>::Type,ABProd<ABObj<MT1,MAT1,T>, ABObj<MT2,B,T> >,T> operator*(const ABObj<MT1,MAT1,T>& a, const ABObj<MT2,B,T>& b) { return ABObj<AlgebraicProdType<MT1,MT2>::Type,ABProd<ABObj<MT1,MAT1,T>, ABObj<MT2,B,T> >,T>(ABProd<ABObj<MT1,MAT1,T>, ABObj<MT2,B,T> >(a, b)); } \
27 template<class A> \
28 inline ABObj<AlgebraicProdType<MT1,MT2>::Type,ABProd<ABObj<MT1,A,T>, ABObj<MT2,MAT2,T> >,T> operator*(const ABObj<MT1,A,T>& a, const ABObj<MT2,MAT2,T>& b) { \
29  return ABObj<AlgebraicProdType<MT1,MT2>::Type,ABProd<ABObj<MT1,A,T>, ABObj<MT2,MAT2,T> >,T>(ABProd<ABObj<MT1,A,T>, ABObj<MT2,MAT2,T> >(a, b)); \
30 } \
31  \
32 */
33 
34 #define OP_MULT1(MT1,MT2,MAT1,MAT2,T) \
35 inline ABObj<AlgebraicProdType<MT1,MT2>::Type,ABProd<ABObj<MT1,MAT1,T>, ABObj<MT2,MAT2,T> >,T> operator*(const ABObj<MT1,MAT1,T>& a, const ABObj<MT2,MAT2,T>& b) { \
36  return ABObj<AlgebraicProdType<MT1,MT2>::Type,ABProd<ABObj<MT1,MAT1,T>, ABObj<MT2,MAT2,T> >,T>(ABProd<ABObj<MT1,MAT1,T>, ABObj<MT2,MAT2,T> >(a, b)); \
37 }
38 
39 OP_MULT1(sym,vec,LASymMatrix,LAVector,double)
40 // OP_MULT1(sym,gen,LASymMatrix,LAGenMatrix,double)
41 // OP_MULT1(sym,sym,LASymMatrix,LASymMatrix,double)
42 // OP_MULT1(gen,vec,LAGenMatrix,LAVector,double)
43 // OP_MULT1(gen,sym,LAGenMatrix,LASymMatrix,double)
44 // OP_MULT1(gen,gen,LAGenMatrix,LAGenMatrix,double)
45 
46  } // namespace Minuit2
47 
48 } // namespace ROOT
49 
50 #endif // ROOT_Minuit2_LaProd
Namespace for new ROOT classes and functions.
Definition: StringConv.hxx:21
#define OP_MULT1(MT1, MT2, MAT1, MAT2, T)
Definition: LaProd.h:34
#define sym(otri1, otri2)
Definition: triangle.c:932