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
19namespace Minuit2 {
20
21/*
22 LM" remove this for fixing alpha poblem
23#define OP_MULT1(MT1,MT2,MAT1,MAT2,T) \
24template<class B> \
25inline ABObj<AlgebraicProdType<MT1,MT2>::Type,ABProd<ABObj<MT1,MAT1,T>, ABObj<MT2,B,T> >,T> operator*(const
26ABObj<MT1,MAT1,T>& a, const ABObj<MT2,B,T>& b) { return ABObj<AlgebraicProdType<MT1,MT2>::Type,ABProd<ABObj<MT1,MAT1,T>,
27ABObj<MT2,B,T> >,T>(ABProd<ABObj<MT1,MAT1,T>, ABObj<MT2,B,T> >(a, b)); } \
28template<class A> \
29inline ABObj<AlgebraicProdType<MT1,MT2>::Type,ABProd<ABObj<MT1,A,T>, ABObj<MT2,MAT2,T> >,T> operator*(const
30ABObj<MT1,A,T>& a, const ABObj<MT2,MAT2,T>& b) { \
31 return ABObj<AlgebraicProdType<MT1,MT2>::Type,ABProd<ABObj<MT1,A,T>, ABObj<MT2,MAT2,T> >,T>(ABProd<ABObj<MT1,A,T>,
32ABObj<MT2,MAT2,T> >(a, b)); \
33} \
34 \
35*/
36
37#define OP_MULT1(MT1, MT2, MAT1, MAT2, T) \
38 inline ABObj<AlgebraicProdType<MT1, MT2>::Type, ABProd<ABObj<MT1, MAT1, T>, ABObj<MT2, MAT2, T>>, T> operator*( \
39 const ABObj<MT1, MAT1, T> &a, const ABObj<MT2, MAT2, T> &b) \
40 { \
41 return ABObj<AlgebraicProdType<MT1, MT2>::Type, ABProd<ABObj<MT1, MAT1, T>, ABObj<MT2, MAT2, T>>, T>( \
42 ABProd<ABObj<MT1, MAT1, T>, ABObj<MT2, MAT2, T>>(a, b)); \
43 }
44
46// OP_MULT1(sym,gen,LASymMatrix,LAGenMatrix,double)
47// OP_MULT1(sym,sym,LASymMatrix,LASymMatrix,double)
48// OP_MULT1(gen,vec,LAGenMatrix,LAVector,double)
49// OP_MULT1(gen,sym,LAGenMatrix,LASymMatrix,double)
50// OP_MULT1(gen,gen,LAGenMatrix,LAGenMatrix,double)
51
52} // namespace Minuit2
53
54} // namespace ROOT
55
56#endif // ROOT_Minuit2_LaProd
#define OP_MULT1(MT1, MT2, MAT1, MAT2, T)
Definition: LaProd.h:37
Class describing a symmetric matrix of size n.
Definition: LASymMatrix.h:45
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.