LaProd.h

Go to the documentation of this file.
00001 // @(#)root/minuit2:$Id: LaProd.h 20880 2007-11-19 11:23:41Z rdm $
00002 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei   2003-2005  
00003 
00004 /**********************************************************************
00005  *                                                                    *
00006  * Copyright (c) 2005 LCG ROOT Math team,  CERN/PH-SFT                *
00007  *                                                                    *
00008  **********************************************************************/
00009 
00010 #ifndef ROOT_Minuit2_LaProd
00011 #define ROOT_Minuit2_LaProd
00012 
00013 #include "Minuit2/ABProd.h"
00014 #include "Minuit2/LAVector.h"
00015 #include "Minuit2/LASymMatrix.h"
00016 
00017 namespace ROOT {
00018 
00019    namespace Minuit2 {
00020 
00021 
00022 /*
00023   LM" remove this for fixing alpha poblem
00024 #define OP_MULT1(MT1,MT2,MAT1,MAT2,T) \
00025 template<class B>                     \
00026 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)); }                  \
00027 template<class A>                                                                                 \
00028 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) { \
00029   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));                  \
00030 } \
00031   \
00032 */
00033 
00034 #define OP_MULT1(MT1,MT2,MAT1,MAT2,T) \
00035 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) {       \
00036   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));  \
00037 }                       
00038 
00039 OP_MULT1(sym,vec,LASymMatrix,LAVector,double)
00040 // OP_MULT1(sym,gen,LASymMatrix,LAGenMatrix,double)
00041 // OP_MULT1(sym,sym,LASymMatrix,LASymMatrix,double)
00042 // OP_MULT1(gen,vec,LAGenMatrix,LAVector,double)
00043 // OP_MULT1(gen,sym,LAGenMatrix,LASymMatrix,double)
00044 // OP_MULT1(gen,gen,LAGenMatrix,LAGenMatrix,double)
00045 
00046   }  // namespace Minuit2
00047 
00048 }  // namespace ROOT
00049 
00050 #endif  // ROOT_Minuit2_LaProd

Generated on Tue Jul 5 14:25:42 2011 for ROOT_528-00b_version by  doxygen 1.5.1