Logo ROOT  
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
17namespace 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) \
25template<class B> \
26inline 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)); } \
27template<class A> \
28inline 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) \
35inline 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
39OP_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
#define OP_MULT1(MT1, MT2, MAT1, MAT2, T)
Definition: LaProd.h:34
VSD Structures.
Definition: StringConv.hxx:21
#define sym(otri1, otri2)
Definition: triangle.c:932