10 #ifndef ROOT_Minuit2_ABProd 
   11 #define ROOT_Minuit2_ABProd 
   20 template<
class M1, 
class M2>
 
   25   ABProd() : fA(M1()), fB(M2()) {}
 
   27   ABProd& operator=(
const ABProd&) {
return *
this;}
 
   29   template<
class MI1, 
class MI2>
 
   30   ABProd& operator=(
const ABProd<MI1,MI2>&) {
return *
this;}
 
   34   ABProd(
const M1& a, 
const M2& b): fA(a), fB(b) {}
 
   38   ABProd(
const ABProd& prod) : fA(prod.fA), fB(prod.fB) {}
 
   40   template<
class MI1, 
class MI2>
 
   41   ABProd(
const ABProd<MI1,MI2>& prod) : fA(M1(prod.A() )), fB(M2(prod.B() )) {}
 
   43   const M1& A()
 const {
return fA;}
 
   44   const M2& B()
 const {
return fB;}
 
   53 template<
class atype, 
class A, 
class btype, 
class B, 
class T>
 
   54 inline ABObj<typename AlgebraicProdType<atype, btype>::Type, ABProd<ABObj<atype,A,T>, ABObj<btype,B,T> >,T> operator*(
const ABObj<atype,A,T>& a, 
const ABObj<btype,B,T>& b) {
 
   56   return ABObj<typename AlgebraicProdType<atype,btype>::Type, ABProd<ABObj<atype,A,T>, ABObj<btype,B,T> >,T>(ABProd<ABObj<atype,A,T>, ABObj<btype,B,T> >(a, b));
 
   63 #endif  // ROOT_Minuit2_ABProd